传入字典变量,但是使用时变成tuple-Python中的逗号与tuple
犯了个比较低级的错误,在这里记录
class Summarizer(object):
def __init__(self, vocab=coor_id_vocab......):
self.vocab = vocab,
在上面的代码中,
coor_id_vocab
是一个字典,但是当我初始化传入后,发现是个tuple
类型,导致后面都无法执行报错。
在这个过程中,熟悉了debug中如何进行evaluate,将变量加入观察窗(可以看看是如何执行的)等等方法。
发现如果某个变量出错时,对其进行重写(在原代码下方重新写个一样的代码例如self.vvv = vocab
再进行debug,可能会有启发。
这段代码的问题出现在在初始化的时候在vocab后面加了个,
(逗号),导致字典变成了一个tuple.......(/捂脸),所以取length的时候都是(1,)
报错。
class Summarizer(object):
def __init__(self, vocab=coor_id_vocab......):
self.vocab = vocab
如上图所示是正确的,去掉了个逗号 也就是在
self.vvv=vocab
重写的过程中发现了这个问题
总结一下:
只有在参数间隔的的时候才能加逗号,赋值的时候加逗号就会变为tuple类型!!!!
加逗号会变成tuple
--------------------------------------------------------------分割线----------------------------------------------
只有一个字符串或者时,直接使用set(‘str’)={'s','t','r'}
,这和我想要得到‘str'
这个结果相违背.
与此同时我去尝试使用tuple来解决这个问题 set(('str'))
, 但是得到的结果还是{'s','t','r'}
后面看了这篇blog才发现问题所在.
简单理解起来是数学上在python中要保持(a)=a
吧,
但是tuple的生成方式也是加括号,
所以为了区分如果是要构成单元素的tuple,就要写成(a,)
,
这样set((‘str’,))={'str'}
有点坑,但是学会了!
推荐阅读
- Shell-Bash变量与运算符
- (二)ES6第一节变量(let|(二)ES6第一节变量(let,const)
- 概率论/统计学|随机变量 的 分布函数 与 概率密度函数 的区别
- 编写字典程序
- py连接mysql
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- 怎样把一个字典的数据添加到另一个字典中()
- linux环境变量相关操作
- 【课程-Perl】Lesson|【课程-Perl】Lesson 2: 值与变量
- 变量声明前置与函数声明前置