[英]How to combine the keys from two different dicts into a list which is the value of a third dict
[英]How to create a Dicts From a List of Dicts which the Keys are retracted from Dict Keys inside the list while keeping different values
我这里有这个列表:
mechs= [
{
'type_code': 'GAT',
'name': 'STRIKE',
'unit_price': 3500,
'minimum_kilo': 500,
},
{
'type_code': 'GAT',
'name': 'BLITZ',
'unit_price': 2500,
'minimum_kilo': 520,
},
{
'type_code': 'ZGMF',
'name': 'LEGEND',
'unit_price': 4500,
'minimum_kilo': 550,
},
]
然后我希望 output 是这样的:
mechas=
{'GAT': {
[
{'type_code': 'GAT',
'name': 'STRIKE',
'unit_price': 3500,
'minimum_kilo': 500},
{'type_code': 'GAT',
'name': 'BLITZ',
'unit_price': 2500,
'minimum_kilo': 520}
]
}
#continue to next dict...
如何让“GAT”字典将下一个值(字典)放入字典而不是重新分配它们?
这是我用过的:
mechas={}
for i in mechs:
mechas[i['type_code']]=i
而 output 是这样的:
{'GAT': {'type_code': 'GAT',
'name': 'BLITZ',
'unit_price': 2500,
'minimum_kilo': 520},
'ZGMF': {'type_code': 'ZGMF',
'name': 'LEGEND',
'unit_price': 4500,
'minimum_kilo': 550}}
这个 output 不包括以前的值(代码 GAT 名称 STRIKE),那么如何保留它而不是重新分配一个新值?
我其实试过list(), append()等,但是我觉得放在这里太长了,结果还是不能让我满意。
a={}
for i in mechs:
type_code=i.get('type_code')
if type_code not in a.keys():
a[type_code]=i
else:
c=[a.get(type_code),i]
a[type_code]=c
上面的代码是如何工作的?下面是解释:
type_code
的键是否在dict
中可用。type_code
及其值作为我们正在读取的索引。type_code
并将它们添加到列表中,并将索引值添加到列表中。 然后用新创建的列表更改type_code
的先前值。那应该有用
mechas={}
for i in mechs:
if i['type_code'] not in mechas:
mechas[i['type_code']]=[]
mechas[i['type_code']].append(i)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.