Python 与字典搏斗
如果有人能帮我解决以下问题,我将不胜感激 编写一个函数,该函数接受包含由空格分隔的单词的字符串,并创建一个字典,其中键对应于字符串中单词的最后一个字符,而相关值对应于以该字符结尾的单词列表 此外,列表必须按字典顺序排序 范例Python 与字典搏斗,python,dictionary,Python,Dictionary,如果有人能帮我解决以下问题,我将不胜感激 编写一个函数,该函数接受包含由空格分隔的单词的字符串,并创建一个字典,其中键对应于字符串中单词的最后一个字符,而相关值对应于以该字符结尾的单词列表 此外,列表必须按字典顺序排序 范例 string = "This will be an amazing experience" 应返回以下词典 {'s':['This'], 'l':['will'], 'e':['be', 'experience'], 'n':['an'], 'g':['amazing']
string = "This will be an amazing experience"
应返回以下词典
{'s':['This'], 'l':['will'], 'e':['be', 'experience'], 'n':['an'], 'g':['amazing']}
我知道该如何解决这个问题。然而,考虑到我仍然是Python的初学者,我很挣扎
我做的第一件事就是创建一个空字典。其次,我使用split方法将字符串转换为一个列表。之后,我创建了另一个列表,它接受第一个字符串列表中单词的最后一个字符,并将其放入新列表中
我使用dict将第二个列表中的元素作为键放入我的字典中,这非常有效。问题是我无法将对应单词的列表作为值
这是我的密码:
def dictionary (string):
mydict = {}
mylist = string.split()
mylist2 = []
for word in mylist:
mylist2.append(word[-1])
mydict = dict((el,(word[-1] for word[-1] in mylist)) for el in mylist2)
return mydict
您不需要两个列表,算法非常简单: 草签一张空的口述 把句子分成几个字 循环读单词 获取单词的最后一个字符,这是dict的关键 检查dict中是否已经存在该密钥,如果不存在,则使用空列表初始化该密钥 将这个词附加到所述列表中
有很多方法可以使用or来缩短,但这是基本思想。您不需要两个列表,算法非常简单: 草签一张空的口述 把句子分成几个字 循环读单词 获取单词的最后一个字符,这是dict的关键 检查dict中是否已经存在该密钥,如果不存在,则使用空列表初始化该密钥 将这个词附加到所述列表中 有很多方法可以使用or来缩短,但这是基本思想。您可以使用a来创建一个带有默认值的空列表的字典。然后,在迭代单词列表时,可以提取最后一个字符作为键,并将单词添加到该键的值列表中
import collections
def dictionary(string):
#Dictionary with default value as empty list
mydict = collections.defaultdict(list)
#Iterate over list of words
for word in string.split():
#Take last character and add word to the value list for that character
last_char = word[-1]
mydict[last_char].append(word)
return dict(mydict)
print(dictionary("This will be an amazing experience"))
输出将是
{'s': ['This'], 'l': ['will'], 'e': ['be', 'experience'], 'n': ['an'], 'g': ['amazing']}
您可以使用创建具有默认值的空列表的词典。然后,在迭代单词列表时,可以提取最后一个字符作为键,并将单词添加到该键的值列表中
import collections
def dictionary(string):
#Dictionary with default value as empty list
mydict = collections.defaultdict(list)
#Iterate over list of words
for word in string.split():
#Take last character and add word to the value list for that character
last_char = word[-1]
mydict[last_char].append(word)
return dict(mydict)
print(dictionary("This will be an amazing experience"))
输出将是
{'s': ['This'], 'l': ['will'], 'e': ['be', 'experience'], 'n': ['an'], 'g': ['amazing']}
st=这将是一次奇妙的体验
定义函数:
d={}
对于圣斯普利特“”中的v:
如果v[-1]在d中:
d[v[-1]]附录
其他:
d[v[-1]]=[v]
返回d
打印函数
st=这将是一次奇妙的体验
定义函数:
d={}
对于圣斯普利特“”中的v:
如果v[-1]在d中:
d[v[-1]]附录
其他:
d[v[-1]]=[v]
返回d
打印函数
对于词典排序部分,您需要记住对列表进行排序 生成它们之后:
my_string = "This will be an amazing experience"
def make_dict(string):
my_dict = {}
for word in string.split():
my_dict.setdefault(word[-1], []).append(word)
for l in my_dict.values():
l.sort()
return my_dict
print(make_dict(my_string))
另一种可能是建立堆,而不是列表,然后快速
从这些堆生成已排序的列表。根据您的具体用例,您的
里程数可能会有所不同。对于词典排序部分,您需要记住对列表进行排序 生成它们之后:
my_string = "This will be an amazing experience"
def make_dict(string):
my_dict = {}
for word in string.split():
my_dict.setdefault(word[-1], []).append(word)
for l in my_dict.values():
l.sort()
return my_dict
print(make_dict(my_string))
另一种可能是建立堆,而不是列表,然后快速
从这些堆生成已排序的列表。根据您的具体用例,您的
里程数可能会有所不同。您能添加一些文字信息吗?您的代码片段究竟如何帮助解决这个问题?能否添加一些文本信息?你的代码片段到底是如何帮助解决这个问题的?这确实帮助了我。有没有什么书或网站可以让你推荐阅读来学习这些东西?非常感谢你,我@alex108。不客气!我个人通过做很多项目和搜索问题来学习Python,我必须找到答案:。通常情况下,如果您有问题,其他人以前会问过-有时需要进行一些搜索才能找到问题,但随着您对Python语言的掌握程度的提高,这会变得更容易。我认为阅读整个Python官方文档会让我受益匪浅,您认为呢?你花了多长时间才精通Python?只是好奇而已。@alex108,我会说几个月——尽管我认为我永远不会停止学习Python和编程方面的新东西!。官方文件是一个很好的资源。如果你发现自己在使用re,我肯定会建议你阅读页面的说明性部分,比如re模块的文档,但我不确定你一次阅读就能从中获得多少好处——我个人总是通过在应用它们的过程中找出需要的东西来更好地学习。这真的帮助了我。有没有什么书或网站可以让你推荐阅读来学习这些东西?非常感谢你,我@alex108。不客气!我个人通过做很多项目和谷歌搜索我不得不解决的问题来学习Python
nd堆栈溢出答案:。通常情况下,如果您有问题,其他人以前会问过-有时需要进行一些搜索才能找到问题,但随着您对Python语言的掌握程度的提高,这会变得更容易。我认为阅读整个Python官方文档会让我受益匪浅,您认为呢?你花了多长时间才精通Python?只是好奇而已。@alex108,我会说几个月——尽管我认为我永远不会停止学习Python和编程方面的新东西!。官方文件是一个很好的资源。如果你发现自己在使用re,我肯定会建议你阅读页面的说明性部分,比如re模块的文档,但我不确定你从一次阅读中会获得多少好处——我个人总是通过在需要应用它们的时候弄清楚东西来学得更好。