如果字典中的某个键为或“0”,如何获取键

2024-06-08 12:09:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我的字典如下,我的产品输出如下。我需要创建一个具有两种类型的新词典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']}

Psuedo代码如下所示。我试图创建,但无法创建如上所述

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


Tags: in类型forindex字典compass产品value
3条回答

你可以用听写理解来做这件事

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'}

这是:

代码:

product = {'Product1': {'index': '1', '1': 'Book', '2': 'Pencil', '3': 'Pen','value': '1'}, 
 'Product2': {'index': '2', '1': 'Marker', '2': 'MYSQL', '3': 'Scale','value': '0'}}
output_1 = {}
output_2 = {}
for key,val in product.items():
    if (val['value'] == '0'):
        output_1[key]=val
        output_2[key]=val.values()
print(output_1)
print(output_2)

输出:

{'Product2': {'1': 'Marker', 'index': '2', '3': 'Scale', '2': 'MYSQL', 'value': '0'}}
{'Product2': ['Marker', '2', 'Scale', 'MYSQL', '0']}

嗨,你真的需要这个索引变量吗?如果不是是,为什么不使用dict列表而不是dict of dict。然而,以下是您想要的:

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] = list(product.values())


print(products)
>>> {'Product1': {'1': 'Book', '2': 'Pencil', '3': 'Pen', 'value': '1'}, 'Product2': ['Marker', 'MYSQL', 'Scale', '0']}

我没有把它分配给任何其他变量,比如out1/2,以防你有两个以上的产品

相关问题 更多 >