2

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

提前致谢

ps 这不是作业,这是我正在尝试创建的一个小程序来学习词汇

4

3 回答 3

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']
于 2013-06-13T04:34:15.723 回答
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']
于 2013-06-13T04:33:06.257 回答
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

于 2013-06-13T04:33:39.877 回答