我有一本以元组为键的字典,我试图拆开元组以创建另一本字典,但结果却不令人满意。
daily_sales = {('naze', 'umuakali'): 6,('peter', 'umuorie'): 1,
('eze','nekede'): 16}
我想要的是另一本类似的字典
send_to_manag = {{'village': 'naze', 'market':'umuakali', 'sales': 6},
{'village': 'peter', 'market':'umuorie', 'sales': 1},...}
字典中的每个项目
我已经尝试过了
send_to_manag = {}
for village,market,sales in daily_sales.items():
send_to_manag['village'] = daily_sales[0][0][0]
send_to_manag['market'] = daily_sales[0][0][1]
send_to_manag['sales'] = daily_sales[0][1]
它给出
KeyError: 0
答案 0 :(得分:1)
仅凭dict
/ list
的理解:
res = [{'village': t[0], 'market': t[1], 'sales': s} for t, s in daily_sales.items()]
print(res)
输出:
[{'market': 'umuakali', 'sales': 6, 'village': 'naze'},
{'market': 'umuorie', 'sales': 1, 'village': 'peter'},
{'market': 'nekede', 'sales': 16, 'village': 'eze'}]
答案 1 :(得分:0)
Tuples可以作为键,因为它们是不可变的。但是,它们仍然表现为普通元组-可以通过索引进行访问。即_tuple[0]
代表第一个索引,_tuple[1]
代表第二个索引。
您想要的第三个值是由元组键控的字典值。因此,您只是将其视为一种价值。
daily_sales = {('naze', 'umuakali'): 6,
('peter', 'umuorie'): 1,
('eze','nekede'): 16
}
send_to_manag = [] # Create a new list (the dict in your example output won't work, because you don't have keys associated with the sub-dicts
for k,v in daily_sales.items(): # Get key and value from each item in daily_sales
village = k[0] # Get the first item form the key tuple
market = k[1] # Get the second item form the key tuple
sales = v # Sales is the value associated with the key tuple
# Now append it to the new list
send_to_manag.append({'village': village, 'market':market, 'sales': sales})
print(send_to_manag )
输出:
[{'village': 'naze', 'market': 'umuakali', 'sales': 6},
{'village': 'peter', 'market': 'umuorie', 'sales': 1},
{'village': 'eze', 'market': 'nekede', 'sales': 16}]
答案 2 :(得分:0)
正如我在评论中所说,词典不能用作另一本词典中的键。但是,您可以获得类似于您想要的字典的列表,如下所示:
from pprint import pprint
daily_sales = {('naze', 'umuakali'): 6,
('peter', 'umuorie'): 1,
('eze','nekede'): 16}
send_to_manag = []
for (village, market), sales in daily_sales.items():
send_to_manag.append({'village': village, 'market': market, 'sales': sales})
pprint(send_to_manag)
打印结果:
[{'market': 'umuakali', 'sales': 6, 'village': 'naze'},
{'market': 'umuorie', 'sales': 1, 'village': 'peter'},
{'market': 'nekede', 'sales': 16, 'village': 'eze'}]
答案 3 :(得分:0)
send_to_management = [ { 'village': key[ 0 ], 'market': key[ 1 ], 'sales': value } for key, value in daily_sales.items() ]
>>> [{'village': 'naze', 'market': 'umuakali', 'sales': 6}, {'village': 'peter', 'market': 'umuorie', 'sales': 1}, {'village': 'eze', 'market': 'nekede', 'sales': 16}]
我不想这么说,但是您上面发布的代码对字典的工作方式了解甚少。
for village,market,sales in daily_sales.items():
也就是说,您上面的代码对字典的工作方式了解甚少。我不想太刻薄,但是仅那几行代码就存在太多错误,我无法正确讨论。
我强烈建议您进一步研究字典的工作方式-因为字典对于使用代码至关重要。
此外,生成器表达式(和正则表达式)是您的朋友。了解他们。