Python 获取字典的元素以创建另一个字典
我想用这张表格带一本字典Python 获取字典的元素以创建另一个字典,python,dictionary,key,key-value,Python,Dictionary,Key,Key Value,我想用这张表格带一本字典 a={'vladimirputin':{'milk': 2.87, 'parsley': 1.33, 'bread': 0.66},'barakobama':{'parsley': 0.76, 'sugar': 1.98, 'crisps': 1.09,'potatoes': 2.67, 'cereal': 9.21}} d={} p={} a={'vladimirputin': {'milk': 2.87, 'parsley': 1.33, 'bread': 0
a={'vladimirputin':{'milk': 2.87, 'parsley': 1.33, 'bread': 0.66},'barakobama':{'parsley': 0.76, 'sugar': 1.98, 'crisps': 1.09,'potatoes': 2.67, 'cereal': 9.21}}
d={}
p={}
a={'vladimirputin': {'milk': 2.87, 'parsley': 1.33, 'bread': 0.66}, 'barakobama':{'parsley': 0.76, 'sugar': 1.98, 'crisps': 1.09, 'potatoes': 2.67, 'cereal': 9.21}}
for key in a:
for product in a[key]:
price=a[key][product]
d[key]=price
p[product]=d
print(p)
把它变成这个
p={'milk': {'vladimirputin': 2.87}, 'cereal': {'barakobama': 9.21},'bread': {'vladimirputin': 0.66}, 'potatoes': {'barakobama': 2.67},'sugar': {'barakobama': 1.98}, 'parsley': {'vladimirputin': 1.33,'barakobama': 0.76}, 'crisps': {'barakobama': 1.09}}.
您可以这样做:
a = {'vladimirputin': {'milk': 2.87, 'parsley': 1.33, 'bread': 0.66}, 'barakobama':{'parsley': 0.76, 'sugar': 1.98, 'crisps': 1.09, 'potatoes': 2.67, 'cereal': 9.21}}
b = {}
for prez in a:
for food in a[prez]:
if food not in b:
b[food] = {prez: a[prez][food]}
else:
b[food][prez] = a[prez][food]
这使得:
{'bread': {'vladimirputin': 0.66},
'cereal': {'barakobama': 9.21},
'crisps': {'barakobama': 1.09},
'milk': {'vladimirputin': 2.87},
'parsley': {'barakobama': 0.76, 'vladimirputin': 1.33},
'potatoes': {'barakobama': 2.67},
'sugar': {'barakobama': 1.98}}
说明:
您的输入词典将总统姓名作为键。输出字典需要食物项作为键
if food not in b语句检查特定食品是否已经是输出字典中的键。如果不是,它将创建一个新字典作为值。就像“sugar”的例子一样:{barakobama':1.98}
如果该键已经存在于输出字典中,它将获取该键并向其添加另一个键值对
就像欧芹一样:{'barakobama':0.76,'vladimirputin':1.33}
您可以通过在代码中添加print语句并在每一步检查输出字典b的值来了解如何进行编码。基于上述答案,我认为在迭代字典时使用items方法更为清晰。它更漂亮,速度更快
by_president = {'vladimirputin': {'milk': 2.87, 'parsley': 1.33, 'bread': 0.66}, 'barakobama':{'parsley': 0.76, 'sugar': 1.98, 'crisps': 1.09, 'potatoes': 2.67, 'cereal': 9.21}}
by_item = {}
for president, inventory in by_president.items():
for food, price in inventory.items():
if food not in by_item: # Create the inner dictionary if it didn't already exist
by_item[food] = dict()
food_dictionary = by_item[food] # A reference to the inner dictionary
food_dictionary[president] = price # Assign to the inner dictionary
谢谢你非常感谢你@shaktimaan,你能解释一下你做了什么吗{prez:a[prez][food]}再次感谢你的解释,你真的很有描述性,@shaktimaan