传入字典变量,但是使用时变成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'}

有点坑,但是学会了!

你可能感兴趣的:(传入字典变量,但是使用时变成tuple-Python中的逗号与tuple)