如果字典键包含某个单词,我该如何删除它?

时间:2018-02-25 06:10:08

标签: python dictionary

关于将河流及其各自位置存储在字典中的简单程序。我想知道如何循环遍历字典键并查看字典键(或值)是否包含某个单词,如果该单词出现在键中,则将其删除。

EX:rivers_dict = {'mississippi river': 'mississippi'}

如何删除字典键'密西西比河'中的'river'一词?我知道我可以分配一些内容,例如:rivers_dict['mississippi'] = rivers_dict.pop('mississippi river')。有没有办法以更模块化的方式做到这一点?提前谢谢。

3 个答案:

答案 0 :(得分:5)

为什么不使用dict理解而不是inplace替换 dict中密钥的名称,您可以使用dict理解轻松完成此操作 -

no_rivers_dict = { key.replace('river', ''):value for key, value in rivers_dict.items() }

print(no_rivers_dict)

<强>输出

{'mississippi ': 'mississippi', 'nothing': 'nile'}

希望这会有所帮助。干杯!

答案 1 :(得分:1)

您可以使用正则表达式逻辑去掉您不想要的密钥部分。问题是如何实现模块化逻辑。

一个建议是将所有值复制到新词典中,然后删除旧词典。如果在这个过程中出现问题,旧的仍然会完整。完成复制后,可以删除旧版本。

new_dict = {re.sub((r'river', '', k): v for k, v in rivers_dict.items()}

现在这段代码没有经过测试,但是如果你包含了一个可复制的例子,我可以测试一下它是否符合我的要求。

所以有一个for循环,它从旧字典中获取每个键,值(k,v)对。然后它使用正则表达式逻辑(特别是re.sub())将它们分配给new_dict并修改密钥。这应该减去匹配river的任何子字符串。您需要导入正则表达式模块

import re

您可以在此处阅读有关re.sub的更多信息https://docs.python.org/2/library/re.html

使用添加的try-catch块,可以放置安全措施,以便在未成功复制时不删除旧字典。

答案 2 :(得分:0)

使用枚举函数来计算所有单词,例如将其循环 对于index,枚举值(dic):