[英]Python Accessing Values in A List of Dictionaries
假设我有一个字典列表,其中包含名称和年龄以及其他信息,如下所示:
thisismylist= [
{'Name': 'Albert' , 'Age': 16},
{'Name': 'Suzy', 'Age': 17},
{'Name': 'Johnny', 'Age': 13}
]
我将如何使用for循环打印以下内容:
Albert
Suzy
Johnny
我只是无法围绕这个想法...
如果您只是在寻找与“名称”相关联的值,那么您的代码应如下所示:
for d in thisismylist:
print d['Name']
看起来你需要查看Python流控制文档 。 基本上,您只需遍历列表中的所有项目,然后对于每个项目(在本例中为字典),您可以访问所需的任何值。 例如,下面的代码将打印出列表中每个字典中的每个值。
for d in my_list:
for key in d:
print d[key]
请注意,这不会打印键,只会打印值。 要打印键,请打印打印语句print key, d[key]
。 那简单!
但实际上,请阅读流量控制文档; 这是很不错的。
如果您需要这些值的列表:
>>> [d['Name'] for d in thisismylist]
['Albert', 'Suzy', 'Johnny']
同样的方法,你可以得到一个数据元组:
>>> [(d['Name'],d['Age']) for d in thisismylist]
[('Albert', 16), ('Suzy', 17), ('Johnny', 13)]
或者,将dicts列表转换为单个键值对字典:
>>> {d['Name']:d['Age'] for d in thisismylist}
{'Johnny': 13, 'Albert': 16, 'Suzy': 17}
所以,同样的方法,打印它们的方法:
>>> print '\n'.join(d['Name'] for d in thisismylist)
Albert
Suzy
Johnny
如果您愿意,可以打印出来:
>>> print '\n'.join(sorted(d['Name'] for d in thisismylist))
Albert
Johnny
Suzy
或者,按照他们的年龄排序,同时扁平化列表:
>>> for name, age in sorted([(d['Name'],d['Age']) for d in thisismylist],key=lambda t:t[1]):
... print '{}: {}'.format(name,age)
...
Johnny: 13
Albert: 16
Suzy: 17
以下代码应该完美地工作。
for var in thisismylist:
print var['Name']
您可以将Name
属性从列表中的每个元素中投影出来,并使用换行符连接结果:
>>> print '\n'.join(x['Name'] for x in thisismylist)
Albert
Suzy
Johnny
编辑
我花了几分钟,但我还想起了另一个有趣的方法。 您可以使用itertools
和operator
模块的组合来执行此operator
。 你也可以在repl.it上看到它 。
>>> from itertools import imap
>>> from operator import itemgetter
>>> print '\n'.join(imap(itemgetter('Name'), thisismylist))
Albert
Suzy
Johnny
在任何情况下,你可能最好使用vanilla for
循环,但我认为其他一些选项是有序的。
在不导入库的情况下执行此操作的简便方法:
print('\n'.join([e["Name"] for e in thisismylist]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.