我有一个接受字符串参数的函数,然后将其转换为直方图字典。该功能应该做的是将每个字符(一个字符)与一个全局变量进行比较,该变量包含字母表中的所有字母。返回一个新的字符串,该字符串的字母减去字典中的字符。如何在使用for循环而不使用counter的函数中完成此操作?
alphabet = 'abcdefghi'
def histogram(s):
d = dict()
for c in s:
if c not in d:
d[c] = 1
else:
d[c] += 1
return d
def missing_characters(s):
h = histogram(s)
global alphabet
for c in h.keys():
if c in alphabet:
del h[c]
missing_characters("abc")
我收到一条错误消息,指出字典已更改。我需要做的是从字典直方图中删除给定的字符串字符,然后按顺序返回所有字母都为新的字符串,除了作为参数传递的字符串中的字母。
先谢谢。
答案 0 :(得分:0)
问题在于-在python3 list()
中,键会生成迭代器。您可以改用alphabet = 'abcdefghi'
def histogram(s):
d = dict()
for c in s:
if c not in d:
d[c] = 1
else:
d[c] += 1
return d
def missing_characters(s):
h = histogram(s)
global alphabet
for c in list(h):
if c in alphabet:
del h[c]
missing_characters("abc")
来解决此问题:
newxampp