从字典的特定元素创建列表

2024-04-28 07:17:12 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,任务给我的代码是

legislators = { "Tsang Yok-sing" : "DAB", "Albert Ho" : "Democratic", "Lee Cheuk-yan" : "Labour", "James To" : "Democratic", "Chan Kam-lam" : "DAB", "Lau Wong-fat" : "Economic Synergy", "Emily Lau" : "Democratic" }

我需要创建两个列表,一个只有立法者的名字,另一个有政党的名单。我不明白列表之间的冒号是什么意思,我猜它是以某种方式把两者联系起来的。非常感谢你的指导

感谢爸爸的爱

对不起,我弄错了,这是人们提到的一本字典。Python新手


Tags: 代码列表yandableelauhosing
3条回答

你的legislatorsdict而不是list。您可以访问keysvalues

names = list(legislators.keys())
parties = list(legislators.values())

print(names)
['Tsang Yok-sing', 'Lee Cheuk-yan', 'James To', 'Chan Kam-lam', 'Lau Wong-fat', 'Emily Lau', 'Albert Ho']

print(parties)
['DAB', 'Labour', 'Democratic', 'DAB', 'Economic Synergy', 'Democratic', 'Democratic']

注意只有在使用python 3.x时,才需要调用listlegislators.keys。对于python 2.x,这是不必要的

编辑

正如@Frerich Raabe在评论中建议的那样,您可以使用set来获得独特的参与方,比如:

parties = set(legislators.values())

print(parties)
{'DAB', 'Democratic', 'Economic Synergy', 'Labour'}

或者如果您希望列表作为结果:

print(list(set(legislators.values())))
['Democratic', 'Labour', 'Economic Synergy', 'DAB']

你有的是一本字典

你可以这样把它分成两个列表:

legislators = { "Tsang Yok-sing" : "DAB", "Albert Ho" : "Democratic", "Lee Cheuk-yan" : "Labour", "James To" : "Democratic", "Chan Kam-lam" : "DAB", "Lau Wong-fat" : "Economic Synergy", "Emily Lau" : "Democratic" }

names = []
parties = []

for item in legislators:
    names.append(item)
    parties.append(legislators[item])

print names, parties

将导致

['Tsang Yok-sing', 'Emily Lau', 'Lau Wong-fat', 'Chan Kam-lam', 'James To', 'Albert Ho', 'Lee Cheuk-yan']
['DAB', 'Democratic', 'Economic Synergy', 'DAB', 'Democratic', 'Democratic', 'Labour']

使用zip(*legislators.items())的简单的oneliner

In[2]: legislators = { "Tsang Yok-sing" : "DAB", "Albert Ho" : "Democratic", "Lee Cheuk-yan" : "Labour", "James To" : "Democratic", "Chan Kam-lam" : "DAB", "Lau Wong-fat" : "Economic Synergy", "Emily Lau" : "Democratic" }
In[3]: names, parties = zip(*legislators.items())
In[4]: names
Out[4]: 
('Tsang Yok-sing',
 'Emily Lau',
 'Lau Wong-fat',
 'Chan Kam-lam',
 'James To',
 'Albert Ho',
 'Lee Cheuk-yan')
In[5]: parties
Out[5]: 
('DAB',
 'Democratic',
 'Economic Synergy',
 'DAB',
 'Democratic',
 'Democratic',
 'Labour')

相关问题 更多 >