取字典元素创建另一个字典 [英] take elements of dictionary to create another dictionary

查看:660
本文介绍了取字典元素创建另一个字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用这个表单的字典

  a = {'vladimirputin':{'milk':2.87, '欧芹':1.33,'面包':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}}

在[key]中的商品:
price = a [key] [product]
d [key] = price
p [product] = d
print(p )

并将其转换为此

  p = {'milk':{'vladimirputin':2.87},'谷物':{'barakobama':9.21},'bread':{'vladimirputin':0.66},'土豆':{'barakobama':2.67},'糖':{'barakobama':1.98},'欧芹':{'vladimirpu锡':1.33,'barakobama':0.76},'crisps':{'barakobama':1.09}}。 


解决方案

你可以这样做:

  a = {'vladimirputin':{'milk':2.87,'parsley':1.33,'bread':0.66},'barakobama' 欧芹:0.76,糖:1.98,薯片:1.09,土豆:2.67,谷物:9.21}} 
b = {}


在[prez]中的食物:
如果食物不在b:
b [food] = {prez:a [prez] [food]}
else:
b [food] [prez] = a [prez] [food]

p>

  {'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}}
pre>

说明on:



您的输入字典 a 将总统姓名作为关键字。输出字典需要食物作为关键。



如果食物不在b 中,则表示检查特定食品已经是输出字典的关键。如果不是,它将创建一个新的字典作为值。像'sugar'的情况:{'barakobama':1.98}



如果密钥已经存在在输出字典中,它获取它并添加另一个键值对
像在'parsley'的情况下:{'barakobama':0.76,'vladimirputin':1.33} code>



您可以通过在代码中添加print语句并检查输出字典的值来了解如何编写进度。 在每一步。


I want to take a dictionary with this form

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)

and transform it into this

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}}.

解决方案

You could do this:

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]

This gives:

{'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}}

Explanation:

Your input dictionary a has president names as keys. The output dictionary needs food items as keys.

The statement if food not in b checks if a particular food item is already a key in the output dictionary. If it is not, it will create a new dictionary as the value. Like in the case of 'sugar': {'barakobama': 1.98}

If the key is already present in the output dictionary, it gets it and adds another key value pair to it like in the case of 'parsley': {'barakobama': 0.76, 'vladimirputin': 1.33}

You can find out how to code progresses by adding print statements in the code and checking the value of the output dictionary b at each step.

这篇关于取字典元素创建另一个字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆