【发布时间】:2013-12-07 15:27:10
【问题描述】:
我有一个字典列表,其中包含一些元组的值:
dic1 = {
'persuaded ': [[('teacher', '6'), ('group', '5'), ('man', '5'), ('girl', '5')]],
'removed ': [[('apple', '5'), ('makeup', '4'), ('trash', '4'), ('stain', '4')]]
}
我需要做的是将嵌套元组转换为字典,以便之后使用键将其与其他类似列表进行比较。理想的结果是这样的:
dic2 = {
'persuaded ': [{'teacher': '6'}, {'group': '5'}, {'man': '5'}, {'girl': '5'}],
'removed ': [{'apple': '5'}, {'makeup': '4'}, {'trash': '4'}, {'stain': '4'}]
}
我试过了:
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)
但在字典中的深度都不够。我真的很感激任何关于如何解决这个问题的建议!谢谢!
【问题讨论】:
-
为什么会有额外的方括号 - 在 dic1 中,您的值是元组列表的列表,而在 dic2 中,您的值是单个字典的列表。更好的输出不是
{'persuaded': {'teacher':6, 'group':5, ...}}吗? -
你有一个元组列表吗?
-
@rdodev 是的,这就是我所拥有的。您认为如果我在转换为字典之前将其展平会更容易吗?
-
@user3008918 绝对。除非你需要它,否则你应该尽可能地扁平化数据结构。
标签: python python-3.x dictionary tuples