20

假设我有一个包含姓名、年龄和其他信息的字典列表,如下所示:

thisismylist= [  
              {'Name': 'Albert' , 'Age': 16},
              {'Name': 'Suzy', 'Age': 17},
              {'Name': 'Johnny', 'Age': 13}
]

我将如何使用 for 循环打印以下内容:

Albert
Suzy
Johnny

我只是无法接受这个想法......

4

6 回答 6

23

如果您只是在寻找与“名称”相关的值,您的代码应如下所示:

for d in thisismylist:
    print d['Name']
于 2013-06-14T22:08:14.390 回答
18

如果您想要这些值的列表:

>>> [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
于 2013-06-14T22:57:43.837 回答
12

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

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

请注意,这不会打印键,仅打印值。要同时打印密钥,请制作您的打印语句print key, d[key]。就这么简单!

但真的,去阅读流控制文档;这是很不错的。

于 2013-06-14T22:04:57.683 回答
5

The following code should work perfectly.

for var in thisismylist:
  print var['Name']
于 2017-10-21T20:19:07.487 回答
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循环,但我认为其他一些选项是有序的。

于 2013-06-14T22:10:19.307 回答
0

在不导入库的情况下执行此操作的速记方法:

print('\n'.join([e["Name"] for e in thisismylist]))
于 2017-04-19T12:55:15.693 回答