如果键之一是字典中的或为'0',如何获取键

问题描述 投票:0回答:2

我的词典在下面,我的产品输出在下面。我需要使用两种类型的Out_1Out_2

创建一个新字典
product = {'Product1': {'index': '1', '1': 'Book', '2': 'Pencil', '3': 'Pen','value': '1'}, 
 'Product2': {'index': '2', '1': 'Marker', '2': 'MYSQL', '3': 'Scale','value': '0'}}

如果乘积内的值为0,则提取密钥

预期输出

Out_1 = {'Product2': {1:'Marker': '2': 'Compass', '3': 'Scale', 'value': 0}}
Out_2 = {'Product2':['Marker','Compass','Scale', '0']}

伪代码在下面。我试图创建但无法如上所述创建

Out_1 = {}
Out_2 = {i:[]}
for i,j in product.items():
  for a,b in j.items():
    if a['value'] == 0:
       Out_2.append(i)

我正在获取索引错误,如何获取Out_1Out_2

python
2个回答
0
投票

您可以为此使用dict理解。

out_1 = {k: v for k, v in product.items() if v['value']=='0'}
out_2 = {k: list(v.values()) for k, v in product.items() if v['value']=='0'}

0
投票

嗨,您真的需要此索引变量吗?如果不是,为什么不使用词典列表而不是词典。但是,这就是您想要的:

products = {'Product1': {'index': '1', '1': 'Book', '2': 'Pencil', '3': 'Pen','value': '1'}, 
 'Product2': {'index': '2', '1': 'Marker', '2': 'MYSQL', '3': 'Scale','value': '0'}}

for k,product in products.items():
    product.pop('index', None)
    if product['value'] == '0':
        products[k] = [x for x in product.values()]


print(products)
>>> {'Product1': {'1': 'Book', '2': 'Pencil', '3': 'Pen', 'value': '1'}, 'Product2': ['Marker', 'MYSQL', 'Scale', '0']}
© www.soinside.com 2019 - 2024. All rights reserved.