【发布时间】:2018-01-20 15:25:45
【问题描述】:
我有一个很长的嵌套元组列表,我正在迭代并以某种方式追加一个空字典:
dict = {}
会这样填充:
dict = {a: {b:1,5,9,2,3}, b: {c:7,4,5,6,2,4}, c: {b:3,13,2,4,2}... }
迭代将检查嵌套字典是否存在,如果存在,则追加该值,否则,创建嵌套字典。我糟糕的尝试看起来像这样:
longlist = [(1,(a,b)),(2,(b,c)), (3,(c,b)) ... ]
dict = {}
for each in longlist:
if dict[each[1][0]][each[1][1]]:
dict[each[1][0]][each[1][1]].append(each[0])
else:
dict[each[1][0]] = {}
dict[each[1][0]][each[1][1]] = each[0]
我的方法的问题是迭代失败,因为字典开始时是空的,或者嵌套的父级在字典中不存在。对我来说越来越复杂了。我无法在网上找到很多关于如何处理嵌套字典的信息,所以我认为应该可以在这里提问。
【问题讨论】:
-
dict = {a: {b:1,5,9,2,3}, b: {c:7,4,5,6,2,4}, c: {b:3,13,2,4,2}... }:你能解释一下它是如何由这样的东西形成的吗:[(1,(a,b)),(2,(b,c)), (3,(c,b))]?如果您能明确我可以提供解决方案。 -
看看
(1,(a,b)),迭代会创建a:{}和b:{},变成a:{b:{}}。然后将附加 1,从而产生a:{b:{1}}。该过程随着数值的填充而重复。我在示例中放置了一个不连续的数字,因为这就是现实世界版本的结果,我正在处理数百个数据:/ -
@JosephKim 添加了进一步的改进。希望对您有所帮助!
标签: python list dictionary nested tuples