我想编写一个函数,它接受单词和键列表,并将这些键作为字典键输出,并附带以该字母开头的任何单词。 如何使用简单的python 3代码实现这一目标?
例如。需要(['apples', 'apple', 'bananna', 'fan'], 'fad')
返回{'a' : ['apple', 'apples'], 'f' : ['fan']}
def dictionary(words, char_keys)
char_keys = remove_duplicates(char_keys)
ret = {}
keys_in_dict = []
words = sorted(words)
for word in words:
if word[0] in char_keys and word[0] not in keys_in_dict:
ret[word[0]] = word
keys_in_dict.append(word[0])
elif word[0] in keys_in_dict:
ret[word[0]] += (word)
return ret
这给了一个正确的输出,但它输出是一个字符串而不是一个字符串列表。(我知道def没有正确缩进)
答案 0 :(得分:2)
如果输入是一个字符串列表,你可以检查字符串是否在dict中,如果是,则附加单词,否则添加一个带有单词的列表:
def dictionary(inpt):
result = {}
for word in inpt:
char = word[0]
if char in result:
result[char].append(word)
else:
result[char] = [word]
return result
这样做的现代方法是使用collections.defaultdict list
作为参数。
def dictionary(inpt):
result = defaultdict(list)
for word in inpt:
result[word[0]].append(word)
return result
答案 1 :(得分:1)
不确定您的输入列表是否仅包含字符串,或者它还可以包含字符串的子列表(我不确定为什么“fad”在您的示例中消失)。显然,在后一种情况下,它需要更多的努力。为简单起见,我假设如果只包含字符串,这里有一段希望指向方向的代码:
d = {}
for elem in input_list[0]:
if elem[0] in input_list[1]
lst = d.get(elem[0], [])
lst.append(elem)
d[elem] = lst