首页 > Python的列表生成器中关于语法的一点问题

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位回答者


你是不是给str赋值了?


重启你的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类型才能用。

【热门文章】
【热门文章】