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