关于将河流及其各自位置存储在字典中的简单程序。我想知道如何循环遍历字典键并查看字典键(或值)是否包含某个单词,如果该单词出现在键中,则将其删除。
EX:rivers_dict = {'mississippi river': 'mississippi'}
如何删除字典键'密西西比河'中的'river'一词?我知道我可以分配一些内容,例如:rivers_dict['mississippi'] = rivers_dict.pop('mississippi river')
。有没有办法以更模块化的方式做到这一点?提前谢谢。
答案 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):