2013-04-30 40 views
0

我有一个这样的名单:如何使用此列表仅使用唯一元素创建列表?

a = [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']] 

我只想用独特的元素创建列表:

result = ['Rostock', 'Lubeck', 'Hamburg', 'Bremen', 'Hannover'] 

我怎么能这样做?由于

回答

3

假设为了事项

>>> a = [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']] 
>>> from collections import OrderedDict 
>>> list(OrderedDict.fromkeys(y for x in a for y in x)) 
['Rostock', 'Lubeck', 'Hamburg', 'Bremen', 'Hannover'] 

或等价:

>>> from itertools import chain 
>>> list(OrderedDict.fromkeys(chain.from_iterable(a))) 
+0

感谢队友!订单确实重要。我会尽可能接受你的答案。 – pynovice 2013-04-30 11:18:58

+0

'OrderedDict'的美丽用法 - 我个人使用'chain.from_iterable',但除此之外 - 正是我会用:) – 2013-04-30 11:38:32

+0

@JonClements好点我也将其作为一个选项加入 – jamylak 2013-04-30 11:39:33

1

如果顺序并不重要 - 使用set:

a = [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']] 
print list(set(y for x in a for y in x)) # prints ['Rostock', 'Hannover', 'Bremen', 'Lubeck', 'Hamburg'] 
0

我觉得这更容易阅读:

a = [['Rostock', 'Lubeck'], ['Rostock', 'Hamburg'], ['Rostock', 'Bremen'], ['Rostock', 'Hannover']] 

result = [] 

for x in a: 
    for y in x: 
     if y not in result: 
      result.append(y) 

这是输出:

>>> print(result) 
['Rostock', 'Lubeck', 'Hamburg', 'Bremen', 'Hannover'] 
相关问题