我想根据优先键列表检索字典键。 字典是这样的:根据列表或优先键检索字典项目
My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'}
和标准清单是:
My_criteria = ['gender', 'age', 'car', 'name']
这怎么能在Python化的方式进行?
我想根据优先键列表检索字典键。 字典是这样的:根据列表或优先键检索字典项目
My_dic = {'name': 'John', 'age': '33', 'gender':'male', 'car': 'SUV'}
和标准清单是:
My_criteria = ['gender', 'age', 'car', 'name']
这怎么能在Python化的方式进行?
您可以通过检索顺序元素指定
for k in sorted(My_dic, key=My_criteria.index):
print(k,":",My_dic.get(k))
我喜欢你的方法。 – Empario
Dictionary不排序,由于信息的存储方式(http://www.python-course.eu/dictionaries.php)。
你可以使用列表理解,如创建元组值的新列表:
ordered_info = [(i,my_dic[i]) for i in my_criteria]
你可以使用一个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']
)。
我喜欢你的方法。 – Empario
通过你的优先键只是重复,不是你的字典,然后使用这些密钥得到的值:
for key in My_criteria:
print My_dic[key]
将打印的顺序来My_criteria
是在你的关键字的值
Python字典不能排序。不过,可以对它们的*显示进行排序。请参阅https://stackoverflow.com/questions/9001509/how-can-i-sort-a-dictionary-by-key –
我喜欢使用[operator module functions](https://docs.python.org/3 /howto/sorting.html#operator-module-functions)的关键功能。 – wwii
@杰弗里:感谢您的快速回复。如果我使用OrderedDict,我将如何在我的列表中排序? – Empario