【发布时间】:2019-02-06 20:20:47
【问题描述】:
需要使用字典理解将单词列表转换为字典。键是单词的长度,值是原始列表中的一组单词,其长度是其键的长度。
我能够为此目的创建一个常规函数,但无法在一个字典理解中这样做。
例如,我创建了一个不同长度的名称列表。
word_list = ["Amber", "Steven", "Carol", "Tuan", "Michael", "sam", "Wayne", "Anna", "Kay", "Jim", "D", "Belinda", "CharlieYu"]
def word_lengths_notit(input_list):
wl_dict = {}
for word in input_list:
if len(word) not in wl_dict.keys():
wl_dict[len(word)]=[] #create key that is the length of the word
wl_dict[len(word)].append(word.lower())
else:
if word.lower() not in wl_dict[len(word)]:
wl_dict[len(word)].append(word.lower())
print(wl_dict)
word_lengths_notit(word_list)
My output:
{5: ['amber', 'carol', 'wayne'], 6: ['steven'], 4: ['tuan', 'anna'], 7: ['michael', 'belinda'], 3: ['sam', 'kay', 'jim'], 1: ['d'], 9: ['charlieyu']}
这可能不是最干净/最有效的代码(我两周前刚开始学习),但输出是正确的。
下面,我尝试了字典理解,但它一直覆盖我以前的值而不是附加到它。我想我可能必须使用列表推导来收集所有相同长度的单词,但我不确定如何(或者如果可以的话)在一个列表推导中创建多个不同长度的单词列表。
def word_lengths(input_list):
wl_dict = {len(word):word for word in input_list]
print(wl_dict)
word_lengths(word_list)
Output: {5: 'Wayne', 6: 'Steven', 4: 'Anna', 7: 'Belinda', 3: 'Jim', 1: 'D', 9: 'CharlieYu'}
【问题讨论】:
标签: python-3.x