我正在寻找一种解压缩具有某个密钥ID的字典列表的方法。我已经看到很多基于键值的例子,但只是一个关键的匹配。假设我有一个从函数返回的以下格式的字典......
data = [{'Lev1': u'82', 'Marker': u'16', 'TYPE': u'139', 'Location': u'A'},
{'Lev2': u'652', 'Marker': u'1', 'TYPE': u'140', 'Location': u'C'},
{'Lev3': u'452', 'Marker': u'188', 'TYPE': u'141', 'Location': u'B'}]
我目前的尝试如下所示,但我得到>> TypeError:list indices必须是整数,而不是str
for item in data:
parts[data['TYPE']].update(data)
上面的parts
参考是零件编号的字典。我希望根据'Lev1': u'82', 'Marker': u'16', 'TYPE': u'139', 'Location': u'A'
将以下每个列表条目(例如TYPE
)放入主要“部分”字典中({1}中应该已存在TYPE匹配}字典)。
我的方法适用于单个返回的字典条目...
parts
...但是没有一本词典列表。
我希望最终得到一种符合......
的格式parts[data['TYPE']].update(data)
答案 0 :(得分:2)
您可update
使用item
代替data
for item in data:
parts[item['TYPE']].update(item)
结果
>>> parts
{'141': {'Lev3': '452', 'TYPE': '141', 'Marker': '188', 'Location': 'B'},
'140': {'Lev2': '652', 'TYPE': '140', 'Marker': '1', 'Location': 'C'},
'139': {'Lev1': '82', 'Marker': '16', 'Location': 'A', 'TYPE': '139'}}
答案 1 :(得分:1)
我认为这就是你想要的,使用item['TYPE']
作为关键匹配。您应该使用item
代替data
。
for item in data:
if isinstance(parts, dict):
# when there is a dictionary in parts with key=item['TYPE'], update it
if parts.get(item['TYPE']):
parts[item['TYPE']].update(item)
# when there is nothing in parts with key=item['TYPE'], add item to it
else:
parts[item['TYPE']]=item
答案 2 :(得分:0)
'TYPE'
不是data
的索引。它是列表item
中字典data
的关键。你可以这样做:
for item in data:
if item['TYPE'] in parts:
parts[item['TYPE']].update(item)
else:
parts[item['TYPE']]=item