gpt4 book ai didi

python - python中根据常见值将列表的列表转换为字典

转载 作者:行者123 更新时间:2023-11-30 22:51:47 26 4
gpt4 key购买 nike

我在 python 中有一个列表,如下所示:

a = [['John', 24, 'teacher'],['Mary',23,'clerk'],['Vinny', 21, 'teacher'], ['Laura',32, 'clerk']]

这个想法是根据他们的职业创建一个字典,如下所示:

b = {'teacher': {'John_24': 'true', 'Vinny_21' 'true'},
'clerk' : {'Mary_23': 'true', 'Laura_32' 'true'}}

实现这一目标的最佳方法是什么?

最佳答案

您可以使用默认字典:

a = [['John', 24, 'teacher'],['Mary',23,'clerk'],['Vinny', 21, 'teacher'], ['Laura',32, 'clerk']]


from collections import defaultdict

dct = defaultdict(defaultdict)


for name, age, occ in a:
dct[occ][name + "_" + age] = "true"

输出:

from pprint import pprint as pp

pp(dict(dct))
{'clerk': defaultdict(None, {'Laura_32': 'true', 'Mary_23': 'true'}),
'teacher': defaultdict(None, {'John_24': 'true', 'Vinny_21': 'true'})}

尽管您也可能只是将每个名称附加到列表中:

from collections import defaultdict

dct = defaultdict(list)

for name, _, occ in a:
dct[occ].append(name + "_" + age)

这会给你:

 defaultdict(<class 'list'>, {'clerk': ['Mary_23', 'Laura_32'], 'teacher': ['John_24', 'Vinny_21']})

如果您想稍后使用年龄,您可能还想单独存储它们:

from collections import defaultdict

dct = defaultdict(list)


for name, age, occ in a:
dct[occ].append([name, age])

这会给你:

defaultdict(<class 'list'>,
{'clerk': [['Mary', 23], ['Laura', 32]],
'teacher': [['John', 24], ['Vinny', 21]]})

使用 python3 你可以使用:

for *nm_age, occ in a:
dct[occ].append(nm_age)

关于python - python中根据常见值将列表的列表转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38900637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com