如何在Python中通过单个字典的键将一堆列表分组

mad_python

我有一堆包含相互关联的元素的列表,我想将它们转换为以列表为值的单个字典:

list1 = ['cat', 'animal']
list2 = ['dog', 'animal']
list3 = ['crow', 'bird']

result = {'animal': ['cat', 'dog'], 'bird': 'crow'}

我该怎么办?

丹尼尔·斯佩兰斯基(Danil Speransky)

简单方法:

data = [['cat', 'animal'], ['dog', 'animal'], ['crow', 'bird']]

result = {}

for value, key in data:
    result[key] = result.get(key, []) + [value]

result #=> {'bird': ['crow'], 'animal': ['cat', 'dog']}

使用defaultdict

from collections import defaultdict

data = [['cat', 'animal'], ['dog', 'animal'], ['crow', 'bird']]

result = defaultdict(list)

for value, key in data:
    result[key].append(value)

result #=> defaultdict(<class 'list'>, {'animal': ['cat', 'dog'], 'bird': ['crow']})

使用groupby来自itertools

from itertools import groupby

data = [['cat', 'animal'], ['dog', 'animal'], ['crow', 'bird']]

{k: [x[0] for x in g] for k, g in groupby(data, lambda x: x[1])}
#=> {'bird': ['crow'], 'animal': ['cat', 'dog']}

使用reduce来自functools

from functools import reduce

data = [['cat', 'animal'], ['dog', 'animal'], ['crow', 'bird']]

reduce(lambda a, e: dict(a, **{e[1]: a.get(e[1], []) + [e[0]]}), data, {})
#=> {'bird': ['crow'], 'animal': ['cat', 'dog']}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过 Python 在一个字符串中打开一堆 .txt 文件

通过其特定键将列表中的字典项分组

将具有相同结构的字典列表放入单个键下的单个字典中

每天将一堆文件分组

Python3如何通过唯一键连接两个字典列表

如何基于Python中的匹配键将键值对添加到另一个字典列表中的现有字典列表中

如何对一堆<path>进行分组

如何在对应的键之后将每个字典值插入到列表中?

如何将 2 个字典列表合并在一起并同时按相同键分组

如何将字典中的键与列表中的元素进行匹配,并将这些键值存储到python中的另一个字典中?

如何从列表Python中的多个字典中删除键

Python列表/字典理解将字典列表键与同一个字典中的另一个键相加

如何在Python中从字典的多个值访问单个键

如何根据python中另一个字典键的匹配来修改字典中的键值列表?

如何在结果中在 mongodb 的字典列表中搜索单个字典?

Python-将字典列表拆分为单个字典

如何将两个列表的值存储在单个字典中,其中第一个列表的值是键,而第二个列表的值是属性?

如何通过python中的第一个字符将元素有效地分组在一个巨大的列表中

如何在字典列表中分组和添加字典键

如何使用python将字典列表创建为单个字典?

如何根据第一行中的信息对一堆行进行分组?

如何在Python中对字典列表进行分组?

如何将嵌套列表(python)分组到字典中?

将一堆数字属性转化为单个分数

我如何将一个字典列表组合到一个组合键的字典列表中

如何在Python中组合多个字典的列表?

如何在 Python 中更新字典列表中的键

如何根据字典中的部分键对字典列表进行分组

如何比较 Python 中的 2 个字典值并通过键与常用字典值配对?