繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM