请参阅'for'循环中的字典元素

时间:2014-12-02 21:40:55

标签: python python-2.7 for-loop dictionary

如果我有一个字典列表,有没有办法引用for循环声明中的特定元素?

这样的事情:

dict_lst = [
  {'a': 1, 'b': 2, 'c': 3},
  {'a': 1, 'b': 2, 'c': 3},
  {'a': 1, 'b': 2, 'c': 3},
]

for d['a'] as dict_elem in dict_lst:
  print dict_elem

或类似的东西?

4 个答案:

答案 0 :(得分:3)

不,as语句中没有for条款。

但明确地说这很容易:

for d in dict_lst:
    dict_elem = d['a']
    print dict_elem

或者更简单:

for d in dict_list:
    print d['a']

或者,如果你想获得幻想:

for dict_elem in (d['a'] for d in dict_lst):
    print dict_elem

或者,只是为了好玩:

for dict_elem in map(operator.itemgetter('a'), dict_lst):
    print dict_elem

您可以将其作为可重复使用的功能包装:

def itemmap(dicts, key):
    for item in dicts:
        yield item[key]

for dict_elem in itemmap(dict_lst, 'a'):
    print dict_elem

作为旁注,您实际上可以for d['a'] in dict_list:,但只是将d['a'](假设d已经是字典)重新分配给列表中的每个新字典,这通常是一件令人困惑的事情。 (它对于混淆的代码竞赛很有用......)

答案 1 :(得分:2)

您可以像generator expression那样使用:

>>> dict_lst = [
...   {'a': 1, 'b': 2, 'c': 3},
...   {'a': 1, 'b': 2, 'c': 3},
...   {'a': 1, 'b': 2, 'c': 3},
... ]
>>> for dict_elem in (d['a'] for d in dict_lst):
...     dict_elem
...
1
1
1
>>>

答案 2 :(得分:0)

你可以用这个:

for element in dict_lst:
    print element['some_key']

答案 3 :(得分:0)

这是最快的和Pythonic方法之一,依靠Python 3:

for key, val in d.iteritems():
    print key, val

还有一种类似的方法items几乎相同。如果在items循环语句中调用它,for将创建一个包含键和值的元组列表。还有一个类似的方法keys,它只返回一个键列表。

在for循环中调用元组时,

iteritems不会生成元组列表。 Each element will be evaluated in each loop cycle.因此没有初始开销和大量内存使用。如果你打破了循环,它也会更好。