python - 为什么我需要在调用函数后分配这个变量?
问题描述
我有以下列表,我尝试使用此代码将键的所有第一个字符更改为大写:
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()
?
解决方案
因为字符串是不可变的,它们不能就地改变,所以调用:
name.capitalize() # or any other method
返回一个新字符串而不是name
就地修改,为了实现你想要的,你可以使用字典理解:
listOfNames = {
k.capitalize() : v for k, v in listOfNames.items()
}
推荐阅读
- css - Style Prime-ng dropdown child elements
- python - [Windows,python]如何让subprocee.Popen()启动的进程在父进程死亡时自动终止?
- java - Android:当 ImageView 没有图像时,防止进入下一个活动
- php - mysql上基于引导徽章颜色的数据
- ios - 移动到另一个屏幕时停止呈现呈现视图控制器
- javascript - 使用 JAVASCRIPT 从 Android 中的 TextBox 向应用程序发送文本
- java - scala for 循环生成器 - 在完成第二个循环后添加换行符
- python - 如何将 pprint 输出作为字符串而不打印在标准输出上?
- postgresql - 如何从 postgres 数据库中以 CSV 格式下载所有表
- travis-ci - Travis-CI 仅在所有构建完成后部署一次