我有一个包含2个字典的列表,如下所示:
accuracy=[{'value':1,'key':'apple'},
{'value':2,'key':'orange'}]
我有一个如下代码:
for fruit in accuracy:
print fruit
上面的代码将给出以下结果:
{'value':1,'key':'apple'}
{'value':2,'key':'orange'}
但我想要这样的事情:
如果我提供name=fruit.key
,则输出应为name=apple
,对于橙色也是如此,如果我给name=fruit.value
,则输出应为value=1
,并且类似于其他水果也是。我怎么能实现这一点。我知道上面的代码,即; name=fruit.key
不会产生我想要的结果。无论如何要得到它?请帮助
答案 0 :(得分:5)
你可以这样做:
accuracy=[{'value':1,'key':'apple'}, {'value':2,'key':'orange'}]
for fruit in accuracy:
print 'name={key}'.format(**fruit)
print 'value={value}'.format(**fruit)
我相信这符合您的需求。您可以在此处阅读有关Python的字符串格式(str.format()
方法)的更多信息:
@mgilson提到了另一种可能性,它可能更符合您的要求。虽然我认为在这种情况下这是一种矫枉过正(为什么只是为了改变符号?),有些人可能会感兴趣,所以我在下面添加它:
# Here is the special class @mgilson mentioned:
class DotDict(dict):
def __getattr__(self, attr):
return self.get(attr, None)
__setattr__=dict.__setitem__
__delattr__=dict.__delitem__
accuracy=[{'value':1,'key':'apple'}, {'value':2,'key':'orange'}]
for fruit in accuracy:
# Convert dict to DotDict before passing to .format() method:
print 'name={fruit.key}'.format(fruit=DotDict(fruit))