我有一个看起来像
的字典{'apples' : 'in_stock', 'bananas' : 'in_stock', 'oranges' : 'not_in_stock'}
我想循环这些并添加价格(或任何其他字段)。最终目标是计算。我想象最终的结果看起来非常像这样。
{
{'apples' : 'in_stock', 'count' : 700},
{'bananas' : 'in_stock', 'count' : 3},
{'oranges' : 'not_in_stock', 'count' : 0}
}
我在向每个初始初始密钥添加密钥时遇到问题。
这是我正在努力尝试完成这项工作的代码。
store_dict = {}
my_query = my_sql_query
for item in my_query:
if item['count'] in store_dict:
store_dict[item['count']] += 1
else:
store_dict[item['count']] = 1
答案 0 :(得分:1)
以下是使用列表推导和字典理解的两个选项。由于您要求的格式不是有效的Python数据结构,因此我将介绍如何创建列表以及如何创建字典。
In [17]: from random import randint
In [18]: from pprint import pprint
In [19]: d = {'apples' : 'in_stock', 'bananas' : 'in_stock', 'oranges' : 'not_in_stock'}
In [20]: l1 = [ { product : stock, 'count' : randint(1,100) if stock == 'in_stock' else 0 } for product, stock in d.items() ]
In [21]: pprint(l1)
[{'apples': 'in_stock', 'count': 56},
{'count': 0, 'oranges': 'not_in_stock'},
{'bananas': 'in_stock', 'count': 74}]
In [22]: d1 = { product : { 'stock' : stock, 'count' : randint(1,100) if stock == 'in_stock' else 0 } for product, stock in d.items() }
In [23]: pprint(d1)
{'apples': {'count': 32, 'stock': 'in_stock'},
'bananas': {'count': 83, 'stock': 'in_stock'},
'oranges': {'count': 0, 'stock': 'not_in_stock'}}
In [24]:
答案 1 :(得分:1)
我认为这个
{
'apples': {'in_stock':True, 'count' : 700},
'bananas': {'in_stock':True, 'count' : 3},
'oranges': {'in_stock':False, 'count' : 0}
}
是您正在寻找的结构。要将原始字典转换为上面的字典,您需要使用另一个字典来匹配项目:
original = {'apples' : 'in_stock', 'bananas' : 'in_stock', 'oranges' : 'not_in_stock'}
to_add = {'apples' : 700, 'bananas' : 3, 'oranges' : 0}
ret_dict = {}
for key, item in original.items():
ret_dict[key] = {
'in_stock': True if original[key] == 'in_stock' else False,
'size':to_add[key]
}
print ret_dict
答案 2 :(得分:0)
您可以浏览代码并以正确的格式构建新词典
d = {'apples' : 'in_stock', 'bananas' : 'in_stock', 'oranges' : 'not_in_stock'}
d2 = []
for key in d.keys():
d2.append({key = d[key], "count" : 700})
您还可以选择以不同的方法使用原始字典,并构建符合
效果的内容dictionary = {
"apples" : {"instock" : True, "count": 700},
"oranges" : {"instock": True, "count": 12}
}
可以在以下
中访问此新词典dictionary["apples"]["count"] = 500