[英]Retrieve dictionary items according to a list or priority keys
我想根据优先级键列表检索字典键。 字典看起来像:
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))
您可以使用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']
)。
由于信息的存储方式,字典无法排序( http://www.python-course.eu/dictionaries.php )。
您可以使用列表理解来创建元组值的新列表,例如:
ordered_info = [(i,my_dic[i]) for i in my_criteria]
只需遍历优先级键(而不是字典),然后使用这些键获取值:
for key in My_criteria:
print My_dic[key]
将按照My_criteria
的顺序打印键的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.