簡體   English   中英

使用python從兩個列表中將元素分組到新列表中

[英]grouping elements into new list from two lists using 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']

提前致謝

ps這不是家庭作業,而是我正在嘗試創建的一個用於學習詞匯的小程序

如果順序無關緊要,我就可以這樣做:

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

像這樣:

#!/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM