python - 对 python dict 中的字符串项的操作

我在尝试编辑 dictionary (python 3.8.9.0) 中的字符串时发现了一些意外行为,新的 value 不会将其放入字符串中。

A dictionary 列表按预期追加

a = {'a':[]}
for k, v in a.items():
   v+=['o']
   
a
Out[24]: {'a': ['o']}

dictionary 字符串不更新:

a = {'a':'a'}
for k, v in a.items():
   v+='o'
   
a
Out[27]: {'a': 'a'}

回答1

字符串是不可变的,即使在适当的位置添加另一个字符串也会导致一个新字符串,但是您可以将 dict 设置用于同一事物。

d = {}

d[1] = "a"
print(id(d[1]), d[1])  # 4302987632 a

s = d[1]
print(id(s), s)  # 4302987632 a

s += "c"
print(id(s), s)  # 4672398256 ac

d[1] += "d"
print(id(d[1]), d[1])  # 4646283568 ad but this time it is placed in the dict

回答2

这是因为列表是可变的,而字符串不是。要获得更“预期”(根据某种定义)的行为,请修改原始 dictionary value。例子:

a = {'a':'a'}
for k, v in a.items():
   v += 'o'
print(a)
# {'a': 'a'}

for k, v in a.items():
   a[k] += 'o'
print(a)
# {'a': 'ao'}

相似文章