【发布时间】:2020-03-01 06:34:36
【问题描述】:
我有一本字典,其中包含一些字典(其编号不固定),而字典又包含数字列表(每个子词典的列表数量也不固定)。
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循环(更具体地说,当值是字典时,键是指文件,而当值是字典时,键是指单个对象values 是字符串)。
我要做的是将列表与单个列表中所有子词典的特定键连接起来。保持顺序很重要,这意味着列表 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”。我的假设正确吗?我怎样才能解决这个问题?
【问题讨论】:
标签: python dictionary