Python dict:获取按键列表排序的值

Nor*_*ldt 0 python dictionary

我不想使用numpy来处理2D矩阵

我想出了如何创建看起来像行和列字典的东西.如果我想查找单个值,它可以正常工作.

但我无法弄清楚如何以与使用我的列相同的顺序从一行获取值

from collections import defaultdict

dic = defaultdict(dict)
rowKeys = ['1','2','3']
columnKeys = ['alfa', 'omega', 'bravo', 'charlie']

# Filling up the dictionary with values
from random import randrange
for rKey in rowKeys:
    for cKey in columnKeys:
        dic[rKey][cKey] = randrange(50)

""" 
    print dic
    defaultdict(<type 'dict'>, {
    '1': {'omega': 28, 'charlie': 42, 'alfa': 13, 'bravo': 45}, 
    '3': {'omega': 8, 'charlie': 5, 'alfa': 13, 'bravo': 4}, 
    '2': {'omega': 19, 'charlie': 42, 'alfa': 29, 'bravo': 26}})
"""
# print dic[rowKeys[0]].keys()
# ['omega', 'charlie', 'alfa', 'bravo']

# In [28]: print dic[rowKeys[0]].values()
# [28, 42, 13, 45]
Run Code Online (Sandbox Code Playgroud)

我想要一个"原始"顺序的值列表

[13, 28, 45, 42]
Run Code Online (Sandbox Code Playgroud)

这样做是否有简洁易读的方法?


UPDATE

@jamylak找到了解决我特定问题的答案.

它没有真正回答我如何通过列表获取值的问题.假设我按字母顺序(或通过其他非逻辑顺序)更改columnKeys的顺序,并希望获得按该顺序返回的值列表.我怎么会这样_ _?

jam*_*lak 7

from collections import defaultdict, OrderedDict

dic = defaultdict(OrderedDict)
rowKeys = ['1','2','3']
columnKeys = ['alfa', 'omega', 'bravo', 'charlie']

# Filling up the dictionary with values
from random import randrange

for rKey in rowKeys:
    for cKey in columnKeys:
        dic[rKey][cKey] = randrange(50)
Run Code Online (Sandbox Code Playgroud)