【问题标题】:transferring int values into dict; TypeError: 'int' object is not subscriptable?将 int 值转换为 dict; TypeError:'int'对象不可下标?
【发布时间】:2017-08-03 08:55:07
【问题描述】:

我正在尝试将 'fwd' 第一列中的 int 值传输到新的 dict 'fragment_dict' 中,但是当我运行我的代码时出现了这种类型错误:“'int' object is not subscriptable”。我想知道是什么问题。

fwd = {1:1, 2:10, 3:100, 5:10000, 103: 103, 204:204, 205:205, 387:387}


fragment_dic = {}
count = 0

for fragment_num in range(0, 388, 1):
    for pos in range(1,101, 1):
        if fwd == int:
            print()
            genomic_position = fragment_num*100 + pos
            count += fwd[genomic_position] 
        elif fwd != int:
            pass
        fragment_dic[fragment_num] = count
        count = 0
        for i in fwd:    
            fwd[fragment_dic] = i[0]

【问题讨论】:

  • 这段代码根本没有任何意义。 fwd 是一个字典,它永远不会是一个整数;即使是这样,fwd == int 也不是检查对象是否为 int 的方法(您的意思是 isinstance(fwd, int));只做pass 的elif 完全没有意义;而实际的错误是因为遍历 dict 给了你键,所以 i 是键。
  • 如果您包含完整的错误消息会有所帮助,特别是它向您显示fwd[fragment_dic] = i[0] 行的位,这意味着我们所要做的就是查看错误以查看它是否在抱怨您不能下标i,因为它是int。这是您所期望的,因为它是 fwd 的键之一。
  • 您的错误是否带有堆栈跟踪?这告诉你问题出在哪条线路上?
  • 感谢@vaultah 的编辑。我是 StackOverflow 的新手 :( 从现在开始将遵循相应的格式。
  • @Duncan 我想我必须彻底寻找,但我会尝试再玩几次..

标签: python python-3.x


【解决方案1】:

完整的错误是:

Traceback (most recent call last):
  File "/tmp/t.py", line 18, in <module>
    fwd[fragment_dic] = i[0]
TypeError: 'int' object is not subscriptable

所以fwddict)或idict 的一个键)都是intfwd 的键确实是 int,所以这就是你得到错误的原因。

【讨论】:

  • 感谢@Duncan 的简洁解释!
  • @KangSanKim 请通过接受邓肯的回答将问题标记为已解决。
猜你喜欢
  • 2017-07-15
  • 2012-02-21
  • 2018-08-07
  • 2023-04-02
  • 2017-11-10
  • 2023-03-20
  • 2015-07-31
相关资源
最近更新 更多