我有一个这样的表格
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}}
我希望像这样转换
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
但是通过使用def我不知道如何只用一个def来呈现这么多的值。所有必要的值都被计算出来但我不知道如何使用它们。
这是我迄今为止的进展
for key in d.keys():
print(key)
length=len(key)
print(length)
products=d[key]
for price in products.values():
for name,valuen in products.items():
if valuen == price:
print("\t",name,":",price,end="\t")
print("\n")
答案 0 :(得分:0)
这个答案取决于我对你上一个问题的回答。获得b
之后,倒置字典,如我之前的answer中所述,您可以使用以下代码获取输出:
def print_data(b):
for key, value in b.items():
print key
print '-' * len(key)
for k, v in value.items():
print ' {}: {}'.format(k, v),
print '\n'
这给出了:
cereal
------
barakobama: 9.21
potatoes
--------
barakobama: 2.67
parsley
-------
vladimirputin: 1.33 barakobama: 0.76
sugar
-----
barakobama: 1.98
crisps
------
barakobama: 1.09
milk
----
vladimirputin: 2.87
bread
-----
vladimirputin: 0.66
请注意,预期输出中的食物顺序和我的答案是不一样的。这是因为默认情况下不会对字典进行排序。如果元素的顺序是一个问题,您可能需要探索OrderedDicts。
上的文档答案 1 :(得分:0)
def get_invert_dict(dict):
{c:{key:v} for key,value in a.iteritems() for c,v in value.iteritems()}
#Test the function
new_dict = get_invert_dict(a)
print(new_dict)
编辑:如果同一个键的多个值(例如:persil)不起作用。最后一个用作值