遍历字典列表
我有一个列表 - myList - 里面的每个元素都是一个字典。我想要遍历这个列表,但每次只关注字典里的一个属性 - 'age'。同时,我也想记录一下我遍历了多少次。
我这样做:
for i, entry in enumerate(myList):
print i;
print entry['age'];
不过我在想,是否有更符合Python风格的方法。有什么建议吗?
4 个回答
7
对于打印的操作,你现在做的差不多是对的。不过如果你想把这些值存起来,可以使用一种叫做列表推导式的方法:
>>> d_list = [dict((('age', x), ('foo', 1))) for x in range(10)]
>>> d_list
[{'age': 0, 'foo': 1}, {'age': 1, 'foo': 1}, {'age': 2, 'foo': 1}, {'age': 3, 'foo': 1}, {'age': 4, 'foo': 1}, {'age': 5, 'foo': 1}, {'age': 6, 'foo': 1}, {'age': 7, 'foo': 1}, {'age': 8, 'foo': 1}, {'age': 9, 'foo': 1}]
>>> ages = [d['age'] for d in d_list]
>>> ages
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> len(ages)
10
31
一种非常简单的方法,就是遍历字典的列表。
>>> my_list
[{'age': 0, 'name': 'A'}, {'age': 1, 'name': 'B'}, {'age': 2, 'name': 'C'}, {'age': 3, 'name': 'D'}, {'age': 4, 'name': 'E'}, {'age': 5, 'name': 'F'}]
>>> ages = [li['age'] for li in my_list]
>>> ages
[0, 1, 2, 3, 4, 5]
39
你可以使用生成器来只获取年龄。
# Get a dictionary
myList = [{'age':x} for x in range(1,10)]
# Enumerate ages
for i, age in enumerate(d['age'] for d in myList):
print i,age
对了,不要使用分号。