Python 根据列表或优先级键检索字典项

Python 根据列表或优先级键检索字典项,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我想根据优先键列表检索字典键。 字典看起来像: My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'} 标准清单如下: My_criteria = ['gender', 'age', 'car', 'name'] 如何以pythonic的方式实现这一点?您可以按指定的顺序检索元素 for k in sorted(My_dic, key=My_criteria.index): print(k,":",M

我想根据优先键列表检索字典键。 字典看起来像:

My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'}
标准清单如下:

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

如何以pythonic的方式实现这一点?

您可以按指定的顺序检索元素

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

由于信息的存储方式,字典不可排序()

您可以使用列表理解创建元组值的新列表,如:


ordered_info=[(i,my_dic[i])用于我的_标准中的i]

您可以使用ordered信息:

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']
)。

只需遍历优先级键,而不是dict,然后使用这些键获取值:

for key in My_criteria:
    print My_dic[key]

将按
My_criteria
的顺序打印键的值。

Python字典无法排序。不过,可以对它们的显示进行排序。看到了吗?我想用它来做关键功能。@Jeffrey:谢谢你的快速回复。如果我使用OrderedICT,我将如何根据我的列表进行排序?@emprio请参阅下面我的答案以使用OrderedICT。我喜欢你的方法。我喜欢你的方法。