提问人:user3573361 提问时间:5/1/2014 最后编辑:Nishant Nawarkhedeuser3573361 更新时间:5/1/2014 访问量:278
获取 Dictionary 的元素来创建另一个 Dictionary
take elements of dictionary to create another dictionary
问:
我想用这种形式拿一本字典
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}}.
答:
0赞
shaktimaan
5/1/2014
#1
你可以这样做:
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}}
解释:
您的输入词典将总统姓名作为键。输出字典需要食物项作为键。a
该语句检查特定食品项是否已经是输出字典中的键。如果不是,它将创建一个新的字典作为值。就像在if food not in b
'sugar': {'barakobama': 1.98}
如果该键已存在于输出字典中,它将获取该键并向其添加另一个键值对
就像在'parsley': {'barakobama': 0.76, 'vladimirputin': 1.33}
您可以通过在代码中添加 print 语句并在每个步骤中检查输出字典的值来了解如何对进度进行编码。b
评论
0赞
user3573361
5/1/2014
非常感谢你@shaktimaan,你能解释一下你这样做的目的是什么{prez: a[prez][food]}
0赞
user3573361
5/1/2014
再次感谢您的解释,您真的很有描述性,@shaktimaan
0赞
Zweedeend
5/1/2014
#2
根据上面的答案,我认为在遍历字典时使用 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
评论