如何访问字典列表中的值?

21
假设我有一个包含姓名、年龄和其他信息的字典列表,如下所示:
thisismylist= [  
              {'Name': 'Albert' , 'Age': 16},
              {'Name': 'Suzy', 'Age': 17},
              {'Name': 'Johnny', 'Age': 13}
]

如何使用for循环打印以下内容?
Albert
Suzy
Johnny

我就是无法理解这个想法...
5个回答

24

如果您只想查找与“Name”相关联的值,则您的代码应如下所示:

for d in thisismylist:
    print d['Name']

21
如果您想要这些值的列表:
>>> [d['Name'] for d in thisismylist]
['Albert', 'Suzy', 'Johnny']

同样的方法,您可以获得数据的元组:

>>> [(d['Name'],d['Age']) for d in thisismylist]
[('Albert', 16), ('Suzy', 17), ('Johnny', 13)]

或者,将字典列表转换为单个键值对字典:
>>> {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

12

看起来你需要查阅Python流程控制文档。基本上,你只需循环遍历列表中的所有项目,然后对于其中每个项目(在本例中为字典),你可以访问任何想要的值。例如下面的代码将打印出列表中每个字典中的每个值。

for d in my_list:
    for key in d:
        print d[key]

请注意,这将不会打印键,只会打印值。如果需要同时打印键和值,请将你的打印语句更改为 print key, d[key]。很简单!

但是,真的,请去阅读流程控制文档; 它非常好。


5
以下代码应该完美地运行。
for var in thisismylist:
  print var['Name']

1
你对 https://dev59.com/s2Qn5IYBdhLWcg3wETvj#17117976 的回答有何不同? - mpx

1
你可以从列表中的每个元素中提取Name属性,并使用换行符将结果连接起来:
>>> print '\n'.join(x['Name'] for x in thisismylist)
Albert
Suzy
Johnny

编辑

我花了几分钟才想起另一种有趣的方法来完成这个任务。您可以结合 itertoolsoperator 模块来完成。您也可以在 repl.it 上查看示例代码

>>> from itertools import imap
>>> from operator import itemgetter
>>> print '\n'.join(imap(itemgetter('Name'), thisismylist))
Albert
Suzy
Johnny

无论如何,你最好使用普通的for循环,但我想还有其他选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接