我在进行一项编码练习,需要返回一个字典,其中键是单词的长度,值是单词本身。这是通过将文本分割为参数传递给get_word_len_dict(text)函数并计算字符数来完成的。然后对长度进行排序,并通过print_dict_in_key_order(a_dict)输出。
我会得到如下输出:
2 : ['to', 'is']
3 : ['why', 'you', 'say', 'are', 'but', 'the', 'wet']
4 : ['does', 'when', 'four', 'they', 'have']
5 : ['there', 'stars', 'check', 'paint']
7 : ['someone', 'believe', 'billion']
这看起来没问题,但如果我想按字母顺序对列表中的值进行排序呢?这意味着以大写字母开头的单词也应该优先考虑。例如:['May','and']。
理想情况下,我希望得到这样的输出,其中值按字母顺序排列:
2 : ['is', 'to']
3 : ['are', 'but', 'say', 'the', 'wet', 'why', 'you']
4 : ['does', 'four', 'have', 'they', 'when']
5 : ['check', 'paint', 'stars', 'there']
7 : ['believe', 'billion', 'someone']
目前我已经成功按照键名排序了print_dict_in_key_order(a_dict)函数中的键,但是如果我也想对值进行排序,应该怎么做呢?
def get_word_len_dict(text):
dictionary = {}
word_list = text.split()
for word in word_list:
letter = len(word)
dictionary.setdefault(letter,[])
if word not in dictionary[letter]:
dictionary[letter].append(word)
return dictionary
def test_get_word_len_dict():
text = 'why does someone believe you when you say there are four billion stars but they have to check when you say the paint is wet'
the_dict = get_word_len_dict(text)
print_dict_in_key_order(the_dict)
def print_dict_in_key_order(a_dict):
all_keys = list(a_dict.keys())
all_keys.sort()
for key in all_keys:
print(key, ":", a_dict[key])