将字典中的字符与字符串进行比较,删除dic项,然后将修改后的dic作为字符串返回

时间:2019-03-16 14:14:50

标签: python string dictionary histogram

我有一个接受字符串参数的函数,然后将其转换为直方图字典。该功能应该做的是将每个字符(一个字符)与一个全局变量进行比较,该变量包含字母表中的所有字母。返回一个新的字符串,该字符串的字母减去字典中的字符。如何在使用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")

我收到一条错误消息,指出字典已更改。我需要做的是从字典直方图中删除给定的字符串字符,然后按顺序返回所有字母都为新的字符串,除了作为参数传递的字符串中的字母。

先谢谢。

1 个答案:

答案 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