2016-08-03 34 views
-1

我想根據優先鍵列表檢索字典鍵。 字典是這樣的:根據列表或優先鍵檢索字典項目

My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'} 

和標準清單是:

My_criteria = ['gender', 'age', 'car', 'name'] 

這怎麼能在Python化的方式進行?

+2

Python字典不能排序。不過,可以對它們的*顯示進行排序。請參閱https://stackoverflow.com/questions/9001509/how-can-i-sort-a-dictionary-by-key –

+0

我喜歡使用[operator module functions](https://docs.python.org/3 /howto/sorting.html#operator-module-functions)的關鍵功能。 – wwii

+0

@傑弗裏:感謝您的快速回復。如果我使用OrderedDict,我將如何在我的列表中排序? – Empario

回答

2

您可以通過檢索順序元素指定

for k in sorted(My_dic, key=My_criteria.index): 
    print(k,":",My_dic.get(k)) 
+0

我喜歡你的方法。 – Empario

1

你可以使用一個OrderedDict:

from collections import OrderedDict 

My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'} 
My_criteria = ['gender', 'age', 'car', 'name'] 

My_dic = OrderedDict([(x, My_dic[x]) for x in My_criteria]) 
# OrderedDict([('gender', 'male'), 
#    ('age', '33'), 
#    ('car', 'SUV'), 
#    ('name', 'John')]) 

的好處是,你仍然可以訪問您數據就好像它是一本字典(例如My_dic['age'])。

+0

我喜歡你的方法。 – Empario

0

通過你的優先鍵只是重複,不是你的字典,然後使用這些密鑰得到的值:

for key in My_criteria: 
    print My_dic[key] 

將打印的順序來My_criteria是在你的關鍵字的值