【发布时间】:2021-12-16 12:54:45
【问题描述】:
因此,尝试创建一个接受字符串输入的函数,并使用该输入,将所有字符的所有实例计数到字典中(如{'a':5, 'b':4 etc..},然后最终创建一个新字典,其中包含 3键:元音,辅音和其他,并添加字符元组:集合中的计数到正确的键。
例如:输入'brown fox'。
返回值应为:{'Vowels':{('o', 2)}, 'Consonants':{('b', 1), ('r', 1), ('w', 1), ('n', 1), ('f', 1), ('x', 1)}, 'Other':{' ', 1}}。
目前我认为通过key的迭代看起来很简单,但是跑到了死胡同。
我的想法是使用函数 symbol_freq 将所有唯一字符排序到字典中,其中字符是键,值是计数。然后我会创建一个空字典,并开始遍历那里的所有键,查看它们是否在元音和辅音列表中,并将所述字符的元组分配给我的新字典中的正确键,其中包含 3 个键。
得到以下错误:
Traceback(最近一次调用最后一次): 文件“....py”,第 26 行,在 print(group("tao pihku ajuhälvik"))
文件“....py”,第 13 行,分组 对于 key,symbol_freq_dict 中的值: ValueError: 没有足够的值来解包(预期 2,得到 1)
def symbol_freq(string):
symbol_freq_dict = dict.fromkeys(string, 0)
for i in string:
symbol_freq_dict[i] += 1
return symbol_freq_dict
def group(string):
vowels = ['a', 'e', 'i', 'o', 'u', 'õ', 'ä', 'ö', 'ü']
consonants = ['b', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 'š', 'z', 'ž', 't', 'v']
string.lower()
symbol_freq_dict = symbol_freq(string)
grouped_dict = dict()
for key, value in symbol_freq_dict:
if key in vowels:
grouped_dict['Vowels'].append((key, value))
if key in consonants:
grouped_dict['Consonants'].append((key, value))
else:
grouped_dict['Other'].append((key, value))
return grouped_dict
【问题讨论】:
-
您能告诉我们错误发生在哪一行吗?这样可以大大减少实际帮助您的工作量。
-
第 13 行,将编辑帖子
-
您应该发布完整的回溯,其中包含行号和上下文。
-
请注意,您应该将第二个
if更改为elif,否则所有元音也将被视为“其他” -
这能回答你的问题吗? How to unpack key,value pairs in python?
标签: python loops dictionary set tuples