2013-06-13 27 views
2

我在Python中有兩個非常長的列表,第一個包含英文單詞,第二個包含西班牙文單詞。由於第二個列表是從第一個列表生成的,因此需要重複很多元素,因此我需要將這些元素與相應的翻譯進行分組。使用python將元素分成兩個列表中的新列表

例如:

#my two lists 
a=['car', 'house', 'wagon', 'rat', 'mouse', 'cart'] 
b=['carro', 'casa', 'carro', 'raton', 'raton', 'carro'] 
#the resulting list must be something like this 
c=['car, wagon, cart: carro', 'house: casa', 'rat, mouse: raton'] 

預先

P.S.感謝它不是一門功課,那就是我試圖創建學習詞彙

回答

3

如果順序並不重要,我只是這個去:

>>> from collections import defaultdict 
>>> a=['car', 'house', 'wagon', 'rat', 'mouse', 'cart'] 
>>> b=['carro', 'casa', 'carro', 'raton', 'raton', 'carro'] 
>>> d = defaultdict(list) 
>>> for k, v in zip(b, a): 
     d[k].append(v) 

這是d樣子:

>>> d 
defaultdict(<type 'list'>, {'casa': ['house'], 'carro': ['car', 'wagon', 'cart'], 'raton': ['rat', 'mouse']}) 

而得到最終的結果

>>> ['{0}: {1}'.format(', '.join(v), k) for k, v in d.items()] 
['house: casa', 'car, wagon, cart: carro', 'rat, mouse: raton'] 

如果訂單確實重要,並且您確切需要該結果:

>>> d = OrderedDict() 
>>> for k, v in zip(b, a): 
     d.setdefault(k, []).append(v) 


>>> ['{0}: {1}'.format(', '.join(v), k) for k, v in d.items()] 
['car, wagon, cart: carro', 'house: casa', 'rat, mouse: raton'] 
2
>>> dic = {} 
>>> for v, k in zip(a, b): 
     dic.setdefault(k, []).append(v) 

>>> ["{}: {}".format(', '.join(v),k) for k,v in dic.iteritems()] 
['house: casa', 'car, wagon, cart: carro', 'rat, mouse: raton'] 
1

像這樣的小程序:

#!/bin/env python 

import pprint 

a=['car', 'house', 'wagon', 'rat', 'mouse', 'cart'] 
b=['carro', 'casa', 'carro', 'raton', 'raton', 'carro'] 

d = {} 
for pair in zip(a,b): 
    if pair[1] not in d: d[pair[1]] = [] 
    d[pair[1]].append(pair[0]) 

pprint.pprint(d) 

打印:

{'carro': ['car', 'wagon', 'cart'], 
'casa': ['house'], 
'raton': ['rat', 'mouse']} 

你可以格式化換句話說,只需循環字典d即可。

相關問題