gpt4 book ai didi

python - 字典 : replacing key characters with whitespace

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:59 24 4
gpt4 key购买 nike

我有一本看起来像这样的字典:

result =  {'Mars': 1358996659, 'Snickers': 26100257, 'Ben%and%Jerry's': 102656, 'Tootsie%roll': 3825986}

我想删除 '%' 并将其替换为空格。

我试过像这样遍历列表:

for key in result:
if "%" in key:
key.replace("%"," ")
print(key)

但是没有用。我也尝试过其他循环,但似乎对我没有任何作用。

我想最终得到一个如下所示的字典:

result =  {'Mars': 1358996659, 'Snickers': 26100257, 'Ben and Jerry's': 102656, 'Tootsie roll': 3825986}

最佳答案

使用 dictionary comprehension构建一个新字典,这样你就可以一次性替换键:

result = {key.replace('%', ' '): value for key, value in result.items()}

理解包括:

  • 生成 key 的表达式,之前的部分:
  • 生成一个值的表达式,之后的部分:for之前的部分
  • 一个for循环;您将获得与 for 循环迭代一样多的 key-value 对(除非您添加更多的 for 循环或 if过滤器)。

您自己的解决方案不起作用,因为 str.replace() 创建了一个 字符串对象并返回它。旧字符串永远不会改变,因为字符串是不可变的;它们不能就地改变。如果您想循环执行工作,则必须:

  • 存储 str.replace() 操作的结果。
  • 删除旧 key (存储它临时引用的值)
  • 将新键添加到字典中,使其指向旧键的值。

但是,在改变字典的同时(删除和添加键是改变)遍历字典是不安全的,因此不受支持。您必须遍历 key 的副本;使用 list(result) 创建一个:

for key in list(result):
if '%' in key:
new_key = key.replace('%', ' ')
value = result.pop(key) # remove the old key, store the value
result[new_key] = value

在这一点上,用字典理解重新生成字典就更容易了。

请注意,在两种方法中,如果将 '%' 替换为 ' ' 会导致冲突,您最终可能会得到更少的键!处理后保留哪个取决于最后处理了哪个现在重复的键。

关于python - 字典 : replacing key characters with whitespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50409825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com