python - 按值对 python 字典列表进行分组

标签 python python-2.7 list dictionary

假设我有一个字典列表,我想创建新的列表列表,按“价格”的值对字典进行分组:

dicts = [
     { "name": "item1", "price": 10 },
     { "name": "item2", "price": 5 },
     { "name": "item3", "price": 10 },
     { "name": "item4", "price": 12 },
     { "name": "item5", "price": 12 },
     { "name": "item6", "price": 5 }
 ]

应该创建:

grouped_dicts = [
     [{ "name": "item1", "price": 10 },
     { "name": "item3", "price": 10 }],
     [{ "name": "item2", "price": 5 },
     { "name": "item6", "price": 5 }],
     [{ "name": "item4", "price": 12 },
     { "name": "item5", "price": 12 }]
]

有什么好的方法可以做到这一点吗?

谢谢

最佳答案

作为 answer above 的替代方案,以下是无需额外导入即可执行此操作的方法:

d = {}

for item in dicts:
    d.setdefault(item['price'], []).append(item)

list(d.values())

输出:

[[{'name': 'item1', 'price': 10}, {'name': 'item3', 'price': 10}],
 [{'name': 'item2', 'price': 5}, {'name': 'item6', 'price': 5}],
 [{'name': 'item4', 'price': 12}, {'name': 'item5', 'price': 12}]]

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

相关文章:

python - 从磁盘读取列表会比加载字典更好吗?

python - 根据同一列的先前值更改Python数据框中的列

python - 如何检查 numpy dtype 是否是整数?

django - 创建 django 管理命令

django - Windows OS上的Django Haystack + ElasticSearch实现

list - 如何从链表的末尾删除第 N 个节点?

python - pypi - 服务器响应 (503) : backend read error

python - 追加 CSV 文件,匹配无序列

python - 如何在 python 中切片元组列表?

java - 如何列出目录及其所有子目录中的所有文件