将嵌套元组转换为嵌套字典

2024-09-29 18:43:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表,它们的值是一些元组:

dic1 = {
    'persuaded ': [[('teacher', '6'), ('group', '5'), ('man', '5'), ('girl', '5')]], 
    'removed ': [[('apple', '5'), ('makeup', '4'), ('trash', '4'), ('stain', '4')]]
}

我需要做的是将嵌套的元组转换成字典,这样我就可以使用键将其与其他类似的列表进行比较。理想的结果是:

^{pr2}$

我试过了:

dic2 = {}
for x, y in dic1_zipped:
    d.setdefault(x, []).append(y)

以及:

from collections import defaultdict
dic2= defaultdict( list )
for n,v in dic1_zipped:
    fq[n].append(v)

但这两个词在字典里都不够深入。如果有什么建议我会非常感激的!谢谢!在


Tags: in列表for字典group元组teachergirl
3条回答

以下嵌套的dict和list理解将为您提供帮助:

dic2 = {key: [{k: v} for sublist in value for k, v in sublist] for key, value in dic1.items()}

演示:

^{pr2}$

我真的很惊讶你不想每个值都有一个字典:

^{3}$

产生:

>>> {key: {k: v for sublist in value for k, v in sublist} for key, value in dic1.items()}
{'removed ': {'stain': '4', 'trash': '4', 'apple': '5', 'makeup': '4'}, 'persuaded ': {'group': '5', 'teacher': '6', 'man': '5', 'girl': '5'}}
>>> pprint(_)
{'persuaded ': {'girl': '5', 'group': '5', 'man': '5', 'teacher': '6'},
 'removed ': {'apple': '5', 'makeup': '4', 'stain': '4', 'trash': '4'}}

如果你去掉了不必要的列表包装

dic1 = {'persuaded ': [('teacher', '6'), ('group', '5'), ('man', '5'), ('girl', '5')], 'removed ': [('apple', '5'), ('makeup', '4'), ('trash', '4'), ('stain', '4')]}

你可以很简单地做到:

^{pr2}$

这给了

^{3}$

这似乎比单条字典列表更有用。在

(如果无法删除额外级别的列表,只需使用dict(v1[0])。)

dict((k, v) for k,v in c1.items())

相关问题 更多 >

    热门问题