【问题标题】:How to remove dictionary items with spaces as their values in Python?如何在 Python 中删除以空格作为值的字典项?
【发布时间】:2020-04-29 23:57:36
【问题描述】:

我通过将键分配为字符串中的单个字符,将值分配为字符串中这些字符的频率来构建字典。目的是计算字符串中出现频率最高的字母。由于我试图只计算字母,因此我想从计数中丢弃空格。

我写了以下内容:

sentence = 'This is some sentence.'

dict_characters = dict.fromkeys(sentence, 0)

for character in sentence:
    dict_characters[c] += 1

dict_letters = {k:v for k,v in dict_characters.items() if v != ' '}

最后一行是我卡住的地方。正如我在打印新字典时所知道的那样,没有从字典中删除包含值空格的项目:

>>> dict_letters:  {'T': 1, 'h': 1, 'i': 2, 's': 4, ' ': 3, 'o': 1, 'm': 1, 'e': 4, 'n': 2, 't
': 1, 'c': 1, '.': 1}

如您所见,' ': 3 仍在其中。我想要它,但无论我如何尝试在 v != ' ' 部分语法中排除该空格字符,我都无法将其删除。知道我做错了什么吗?

【问题讨论】:

  • v 是值。你似乎担心钥匙(k
  • 基于@PaulH 的回答,应该是这样的,空格存在于您的键中,而不是值dict_letters = {k:v for k,v in dict_characters.items() if k != ' '}
  • 谢谢@PaulH。
  • 谢谢@faruk13。

标签: python python-3.x


【解决方案1】:

您使用了错误的变量。

替换

dict_letters = {k:v for k,v in dict_characters.items() if v != ' '}

dict_letters = {k:v for k,v in dict_characters.items() if k != ' '}

注意将v 替换为kv代表字符的值; k 是角色本身。

【讨论】:

  • 知道了。我以某种方式设法错过了空格字符实际上是我的关键这一事实。谢谢。
【解决方案2】:

您正在检查v,而有一个键是' '

尝试将其更改为 k 或两者兼有:

dict_letters = {k:v for k,v in dict_characters.items() if v != ' ' and k != ' '}

【讨论】:

  • 谢谢,不知怎的我错过了意识到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 2018-06-05
  • 2018-07-02
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 2021-12-28
相关资源
最近更新 更多