首页 > 解决方案 > 为什么我需要在调用函数后分配这个变量?

问题描述

我有以下列表,我尝试使用此代码将键的所有第一个字符更改为大写:

listOfNames = {
    'tim':1,
    'frank':1
}

for name in listOfNames.keys():
    name = name.capitalize()
    print(name)

我注意到,当我省略变量的赋值时,name如下所示:

for name in listOfNames.keys():
    name.capitalize()
    print(name)

它打印出所有键而不更改它们。现在如果我理解正确的话,name只是密钥的副本。但我capitalize在该副本上运行该方法。为什么当我离开时它不返回大写的键name = name.capitalize()

标签: pythonpython-2.7methodsvariable-assignment

解决方案


因为字符串是不可变的,它们不能就地改变,所以调用:

name.capitalize()  #  or any other method

返回一个新字符串而不是name就地修改,为了实现你想要的,你可以使用字典理解:

listOfNames = {
    k.capitalize() : v for k, v in listOfNames.items()
}

推荐阅读