首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在保留不同值的情况下,从列表中从Dict键中提取密钥的字典列表中创建Dicts

如何在保留不同值的情况下,从列表中从Dict键中提取密钥的字典列表中创建Dicts
EN

Stack Overflow用户
提问于 2022-03-20 09:11:51
回答 2查看 48关注 0票数 -1

我这里有一份清单:

代码语言:javascript
复制
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,
        },
    ]

然后我希望输出是这样的:

代码语言:javascript
复制
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‘dict将下一个值( dict )放入dict,而不是重新分配它们?

以下是我所用的:

代码语言:javascript
复制
mechas={}
for i in mechs:
    mechas[i['type_code']]=i

输出结果如下:

代码语言:javascript
复制
{'GAT': {'type_code': 'GAT',
  'name': 'BLITZ',
  'unit_price': 2500,
  'minimum_kilo': 520},
 'ZGMF': {'type_code': 'ZGMF',
  'name': 'LEGEND',
  'unit_price': 4500,
  'minimum_kilo': 550}}

此输出不包括前一个值(代码GAT名称罢工),因此如何保留它而不是重新分配一个新值?

实际上,我尝试了list()、append()等等,但是我认为把它放在这里太长了,结果仍然不能让我满意。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-21 09:40:46

代码语言:javascript
复制
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的前一个值.
票数 1
EN

Stack Overflow用户

发布于 2022-03-20 10:21:57

那应该能行

代码语言:javascript
复制
mechas={}
for i in mechs:
  if i['type_code'] not in mechas:
    mechas[i['type_code']]=[]
  mechas[i['type_code']].append(i)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71545449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档