同じ長さの 2 つのリストがあります。
alist = ['XX', 'HH', 'GG', 'XX', 'II', 'PP', 'LL', 'TT', 'KK', 'XX']
blist = [2, 3, 5, 5, 9, 8, 9, 4, 7, 2]
alist のどの値が blist で同じ番号を持っているかを知りたいです。結果を次のようにしたい:
2 = XX; 3 = HH; 5 = GG、XX; 9 = II、LL; 8 = PP; 4 = TT; 7 = KK
私はこのようにそれを解決しました:
from collections import defaultdict
adict = {}
a = zip(blist, alist)
for key, value in a:
adict.setdefault(k, []).append(v)
次の結果が得られます: adict:
{2: ['XX', 'XX'], 3: ['HH'], 4: ['TT'], 5: ['GG', 'XX'], 7: ['KK'], 8: ['PP'], 9: ['II', 'LL']}
しかし、同じ値を 2 回使用する必要はありません。たとえば、2: ['XX', 'XX'] - 代わりに 2: ['XX'] が必要です。
I tried this using 'set' before the list of values:
a = zip(blist, alist)
for key, value in a:
a.setdefault(k, set[]).append(v)
しかし、それは不平を言いました...何かアイデアはありますか?