迭代获取ke /值对的对象列表

时间:2015-05-01 10:03:18

标签: python list

我想以尽可能简单的方式迭代对象列表(我不知道它们的键),而不会创建不必要的临时变量。

所以,让我们说这是我的阵列:

y = [{'faz': 'baz'}, {'foo': 'bar'}]

使用iteritems()可以轻松地从对象获取k,v,但是是否可以同时使用lambda迭代列表?

修改

伪代码:

for k, v in x where x is an array item

1 个答案:

答案 0 :(得分:1)

如果您的密钥在列表中是唯一的,您可以执行以下操作:

for k, v in {k:v for l in y for k, v in l.iteritems()}.iteritems():
    print k, v

或等效,

y2 = {k:v for l in y for k, v in l.iteritems()}
for k, v in y2.iteritems():
    print k, v

但它不是很漂亮。

如果你所有的dict都有一个键值对,你可以这样做:

for k,v in map(lambda x: x.items()[0], y):
    print k, v

另一种解决方案是以下方法,它只是遍历列表,然后遍历dict:

def items(lis):
    for l in lis:
        for k, v in l.iteritems():
            yield k, v

for k, v in items(y):
    print k, v