2016-02-17 135 views
0

嗨,我已经从我的任务给予代码的特定元素的列表是创建从字典

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新手

+5

这不是一个列表,这是一个字典。冒号意味着元素之间的键 - >值关系 –

+0

哦,我明白了。谢谢我会在Google上查看这些内容! –

+0

它的一个字典与键:值对 –

回答

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'] 

需要调用listlegislators.keys只有当你有蟒蛇3.x。对于python 2.x这没有必要。

编辑

由于@Frerich拉贝在评论所说,你可以使用set获得独特的各方,如:

parties = set(legislators.values()) 

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

或者,如果你想列表作为结果:

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

你可能想使用'set()'而不是'list()'摆脱'缔约方'中的重复。 –

+0

正是我所需要的,非常感谢你 –

+1

@FrerichRaabe是啊,如果OP感兴趣的独特价值可以用'set'完成 –

0

你在那里有一本字典。

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

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'] 
0

易oneliner使用zip(*legislators.items())

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')