我有一个字典,其中包含一些字典(其数量是不固定的),而这些字典又包含数字列表(每个子字典的列表数量也是不固定的)。
Data_Dict ={0:{0:[list 00], 1:[list 01], 2:[list 02], 3:[list 03], ...},
1:{0:[list 10], 1:[list 11], 2:[list 12], 3:[list 13], ...},
2:{0:[list 20], 1:[list 21], 2:[list 22], 3:[list 23], ...},
...}
Data_Dict是我从不同文件中解析数据得到的,每个文件都提供了关于不同对象的信息。
字典的键来自我用来导入不同文件或不同对象的for循环(更具体地说,当值是字典时,键引用文件,而当值是字符串时,键引用单个对象)。
我试图做的是将所有子字典的列表与一个特定的键连接在一个列表中。保持顺序是很重要的,这意味着列表Data_Dict[0][0]的元素必须在列表Data_Dict[1][0]的元素之前,依此类推。在这里,你有想要的结果:
NewData_Dict ={0:[list 00, list 10, list 20,...],
1:[list 01, list 11, list 21,...],
2:[list 02, list 12, list 22,...],
...}
我一直在尝试使用另一个问题(How can I combine dictionaries with the same keys?)中的建议,即:
NewData_Dict = {}
for k in Data_Dict[0]:
NewData_Dict[k] = [d[k] for d in Data_Dict]
它给我的是:
NewData_Dict[k] = [d[k] for d in Data_Dict]
TypeError: 'int' object is not subscriptable
我也试着回答问题Combine values of same keys in a list of dicts:
NewData_Dict = {
k: [d.get(k) for d in Data_Dict]
for k in set().union(*Data_Dict)
}
得到回报:
NewData_Dict = {k: [d.get(k) for d in Data_Dict] for k in set().union(*Data_Dict)}
TypeError: 'int' object is not iterable
我想问题可能是我的字典的键是“int”。我的假设正确吗?我该怎么办?
5条答案
按热度按时间ncgqoxb01#
代码注解中的解释。试试看:
输出量:
u5rb5r592#
简单的解决方案在这里
zour9fqk3#
这个循环可能会有帮助
hvvq6cgz4#
您可以遍历每个嵌套dict的项。
输出量:
odopli945#