Python 要听写的课程列表

Python 要听写的课程列表,python,iterable,Python,Iterable,我有一个名单,上面有一群人班级。我想让每个人.nameatribute(通过get_name方法)成为dict中该实例的关键 例如: people_list = [person1, person2, person3, person4] # Becomes: people_dict = {'John': person1, 'Mary': person2, 'Mike': person3, 'Jay Z': person4] 当然,这可以通过一个适当的循环轻松实现,但我正在寻找一种pythonic

我有一个名单,上面有一群
班级。我想让每个
人.name
atribute(通过
get_name
方法)成为dict中该实例的关键

例如:

people_list = [person1, person2, person3, person4]
# Becomes:
people_dict = {'John': person1, 'Mary': person2, 'Mike': person3, 'Jay Z': person4]
当然,这可以通过一个适当的循环轻松实现,但我正在寻找一种pythonic的、高效的转换方法

我找到了,并尝试了它被接受的答案,只做了一点改变:

from itertools import izip
iterable = iter(people_list)
people_dict = dict(izip(iterable.get_name, iterable))
当然,这不起作用,因为
iterable
不是
People
类的实例,而是一个
listiterator
,它没有名为
get\u code
的方法。但我想我想要达到的目标是显而易见的


你知道吗?我目前正在使用python 2.7。

您可以使用字典理解来生成字典:

people_dict = {p.get_name(): p for p in people_list}
这将为
人员列表中的每个条目生成一个键值对,其中的键取自
p.get\u name()
方法调用

您也可以使用
dict()
调用来实现,在这种情况下,您可以使用生成器表达式生成键值对作为元组:

people_dict = dict((p.get_name(), p) for p in people_list)
后者是您必须在较旧的Python版本上使用的语法,因为字典理解仅添加到Python2.7及更高版本中


zip()。你这里没有这个;您有一个可以直接提供键的对象列表。

您可以使用字典理解来生成字典:

people_dict = {p.get_name(): p for p in people_list}
这将为
人员列表中的每个条目生成一个键值对,其中的键取自
p.get\u name()
方法调用

您也可以使用
dict()
调用来实现,在这种情况下,您可以使用生成器表达式生成键值对作为元组:

people_dict = dict((p.get_name(), p) for p in people_list)
后者是您必须在较旧的Python版本上使用的语法,因为字典理解仅添加到Python2.7及更高版本中


zip()。你这里没有这个;您有一个能够直接提供键的对象列表。

您可以使用comps制作字典,就像制作列表一样

{element.get_name(): element for element in people_list}

你可以像制作列表一样使用comps制作字典

{element.get_name(): element for element in people_list}