首页 > 解决方案 > 从字典列表中为另一个字典中的键获取相同的值

问题描述

这是我的字典列表。

d = [{'count': '100', 'zone': 'PIMPRI', 'cycle': '15'},
     {'count': '50', 'zone': 'PIMPRI', 'cycle': '15'},
     {'count': '150', 'zone': 'PIMPRI', 'cycle': '30'}]

我怎样才能得到如下输出:

d_one = [{'count': '100', 'zone': 'PIMPRI', 'cycle': '15'},
         {'count': '50', 'zone': 'PIMPRI', 'cycle': '15'}]

d_two = [{'count': '150', 'zone': 'PIMPRI', 'cycle': '30'}]

从两个键区和循环的字典列表中获取不同的数据。对于相同的区域和循环对,创建一个字典列表,直到结束。

标签: pythonlist-comprehensiondictionary-comprehension

解决方案


使用对(dct['zone'], dct['cycle'])作为键来制作字典:

>>> result = {}
>>> 
>>> for dct in d:
...     result.setdefault((dct['zone'], dct['cycle']), []).append(dct)
... 
>>> result
{('PIMPRI', '15'): [{'count': '100', 'zone': 'PIMPRI', 'cycle': '15'}, {'count': '50', 'zone': 'PIMPRI', 'cycle': '15'}], ('PIMPRI', '30'): [{'count': '150', 'zone': 'PIMPRI', 'cycle': '30'}]}

推荐阅读