我在尝试编辑字典中的字符串时发现了一些意外行为(python 3.8.9.0),新值不会使其进入字符串。
列表字典按预期追加
a = {'a':[]}
for k, v in a.items():
v+=['o']
a
Out[24]: {'a': ['o']}
字符串字典不更新:
a = {'a':'a'}
for k, v in a.items():
v+='o'
a
Out[27]: {'a': 'a'}
字符串是不可变的,即使在适当的位置添加另一个字符串也会导致一个新字符串,但是您可以使用dict setting来完成相同的事情。
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
这是因为列表是可变的,而字符串不是。得到更多的"期望"(根据某些定义)行为,修改原始字典值。例子:
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'}