添加键到dict得到一个dicts的字典

时间:2015-10-16 21:18:48

标签: python python-2.7 dictionary

我有一个看起来像

的字典
{'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

3 个答案:

答案 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