python - 按某个键的值对列表中的字典进行分组

标签 python list dictionary

我有一个包含这样的字典的列表:

d = [ {'key1': 1, 'key2': 10, 'key3': 0.75, 'key4':5},
 {'key1': 2, 'key2': 20, 'key3': 0.6, 'key4':4},
 {'key1': 3, 'key2': 10, 'key3': 0.8, 'key4':8
 {'key1': 4, 'key2': 30, 'key3': 0.86, 'key4':2},
 {'key1': 5, 'key2': 10, 'key3': 0.9, 'key4':7},
 {'key1': 6, 'key2': 20, 'key3': 0.73, 'key4':3},
]

我想将 key2 中具有相同值的字典分组。像这样:

d10= [{'key1': 1, 'key2': 10, 'key3': 0.75, 'key4':5},
 {'key1': 3, 'key2': 10, 'key3': 0.8, 'key4':8},
 {'key1': 5, 'key2': 10, 'key3': 0.9, 'key4':7} ]

d20= [ {'key1': 2, 'key2': 20, 'key3': 0.6, 'key4':4},
 {'key1': 6, 'key2': 20, 'key3': 0.73, 'key4':3} ]

d30=[ {'key1': 4, 'key2': 30, 'key3': 0.86, 'key4':2} ]

你能帮我吗?

最佳答案

这是使用 defaultdict 的一种方法:

from collections import defaultdict                                                            

res = defaultdict(list)                                                                        

for obj in d: 
     key = obj['key2'] 
     res[key].append(obj)                                                                                               

输出:

defaultdict(list,
            {10: [{'key1': 1, 'key2': 10, 'key3': 0.75, 'key4': 5},
              {'key1': 3, 'key2': 10, 'key3': 0.8, 'key4': 8},
              {'key1': 5, 'key2': 10, 'key3': 0.9, 'key4': 7}],
             20: [{'key1': 2, 'key2': 20, 'key3': 0.6, 'key4': 4},
              {'key1': 6, 'key2': 20, 'key3': 0.73, 'key4': 3}],
             30: [{'key1': 4, 'key2': 30, 'key3': 0.86, 'key4': 2}]})

关于python - 按某个键的值对列表中的字典进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70761905/

相关文章:

python - 易趣 API 'Invalid auction currency' 错误

python - 递归后序遍历以在 Python 中列出?

Python优化如何在列表中查找重复值和值索引

vba - 高级筛选条件可以在 VBA 中而不是范围中吗?

python - 转换字符串

python - Debian 上的端口映射 HTTP 服务器?

list - 当列表参数有多个元素时 Haskell 出错

perl - 如何使用 map 将函数应用于列表?

python - 带迭代的二维字典

python - 我如何在 python lxml、XPath 中使用正则表达式