传入字典变量,但是使用时变成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'} 有点坑,但是学会了!

    推荐阅读