python字典中对字符串项的操作



我在尝试编辑字典中的字符串时发现了一些意外行为(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'}

相关内容

  • 没有找到相关文章

最新更新