我想以尽可能简单的方式迭代对象列表(我不知道它们的键),而不会创建不必要的临时变量。
所以,让我们说这是我的阵列:
y = [{'faz': 'baz'}, {'foo': 'bar'}]
使用iteritems()
可以轻松地从对象获取k,v,但是是否可以同时使用lambda迭代列表?
修改
伪代码:
for k, v in x where x is an array item
答案 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