在Python中获取列表的价值

时间:2012-09-21 11:23:09

标签: python list dictionary

我有一个包含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不会产生我想要的结果。无论如何要得到它?请帮助

1 个答案:

答案 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))