Python的列表生成器中关于语法的一点问题
巴扎黑
巴扎黑 2017-04-17 16:46:23
[Python讨论组]
>>> d
{'d': 4, 'e': 5, 'b': 2, 'a': 1, 'c': 3}

>>> [k+'='+v for k,v in d.items()]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
TypeError: Can't convert 'int' object to str implicitly

>>> [k+'='+str(v) for k,v in d.items()]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
TypeError: 'str' object is not callable

想问问这个 'str' object is not callable 为什么会这样呢?

======================
感谢三位,确实是自己给str赋值了。。。
由于只能采纳一个,所以采纳的第一个让我突然明白是怎么回事的答案
还是衷心的感谢3位回答者

巴扎黑
巴扎黑

全部回复(3)
巴扎黑

重启你的IDLE

目测是你玩过火了,str被覆盖了

高洛峰

应该是这样写的 [k+'='+str(v) for k,v in d.items()],v在循环的时候是int类型,无法与str类型用+连接,所以必须要把v转换成str类型才行。输出['a=1', 'c=3', 'b=2', 'e=5', 'd=4']

我用上面的方法是没问题的,看了下面的回答,包括你的错误类型,补充一点,就是如下面的大兄弟的答案一样,可能是你把str赋值了,重启试试看,但是你重启了之后依旧会有错误,还是要将v转换成str类型才能用。

大家讲道理

你是不是给str赋值了?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号