2016-08-03 30 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是在你的关键字的值