Ish*_*edi 9 python dictionary list python-3.x
假设我有一个包含字谜字符串的列表。例如,
anList = ['aba','baa','aab','cat','tac','act','sos','oss']
Run Code Online (Sandbox Code Playgroud)
我想构建一个包含该列表元素作为关键字的字典,该元素的字谜字符串将作为该关键字的值作为列表,而且将添加到列表中的元素也不会重复作为该字典的另一个关键字。例如,如果“ baa”已添加到列表中,该列表是键“ aba”的值,则“ baa”不能再添加为键。输出字典应该看起来像,
anDict = {'aba' : ['baa','aab'],'cat' : ['tac','act'],'sos' : ['oss']}
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方法,但是问题是列表中添加的元素再次被添加为字典的键。
我该怎么办?
您可以使用Counter对象将单词按字母数分组:
from collections import Counter
from itertools import groupby
sorted list = sorted(anList, key=Counter)
groups = [list(y) for x, y in groupby(sortedList, key=Counter)]
#[['aba', 'baa', 'aab'], ['cat', 'tac', 'act'], ['sos', 'oss']]
Run Code Online (Sandbox Code Playgroud)
现在,将字谜列表列表转换成字典:
{words[0]: words[1:] for words in groups}
#{'aba': ['baa', 'aab'], 'cat': ['tac', 'act'], 'sos': ['oss']}
Run Code Online (Sandbox Code Playgroud)