在字典中添加来自列表的项目导致 TypeError

Posted

技术标签:

【中文标题】在字典中添加来自列表的项目导致 TypeError【英文标题】:adding item in the dictionary coming from a list resulted in TypeError 【发布时间】:2017-10-16 09:58:51 【问题描述】:

这是代码:

import bisect

data = 'sal': 25000 # stored data from user input
table = 1249.99: 36.30, 1749.99: 54.50, 2249.99: 72.70, 2749.99: 90.80, 
         3249.99: 109.00, 3749.99: 127.20, 4249.99: 145.30, 4749.99: 163.50, 
         5249.99: 181.70, 5749.99: 199.80, 6249.99: 218.00, 6749.99: 236.20,
         7249.99: 254.30, 7749.99: 272.50, 8249.99: 290.70, 8749.99: 308.80, 
         9249.99: 327.00, 9749.99: 345.20, 10249.99: 363.30, 10749.99: 381.50, 
         11249.99: 399.70, 11749.99: 417.80, 12249.99: 436.00, 12749.99: 
         454.20, 13249.99: 472.30, 13749.99: 490.50, 14249.99: 508.70, 
         14749.99: 526.80, 15249.99: 545.00, 15749.99: 563.20, 15750.00: 
         581.30

# get corresponding value from the table
table_bisect = bisect.bisect(sorted(table), data['sal'])
if table_bisect >= 30:
   table_bisect = 30
else:
  table_bisect = table_bisect
s_table = sorted(table.value())
data['new'] = ''.join(s_table[table_bisect:(table_bisect+1)] 
# TypeError: sequence item 0: expected string, float found

一切正常,直到最后一行返回上面的错误。我该如何解决错误或有什么解决方法?

【问题讨论】:

【参考方案1】:

这是因为如果你用list[index:index+1] 切片,它只返回一个值,在这种情况下是一个浮点数:

>>> y = [21, 4, 2, 5, 4, 3, 7, 9]
>>> y[5:6]
[3]
>>> ''.join(y[5:6])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> 

相反,只需执行以下操作:

data['new'] = s_table[table_bisect:(table_bisect+1)][0]

【讨论】:

【参考方案2】:

另一种选择是这样做:

data['new'] = ''.join(str(s_table[table_bisect:(table_bisect+1)]))

join() 方法需要字符串类型,如果您需要使用它。

【讨论】:

以上是关于在字典中添加来自列表的项目导致 TypeError的主要内容,如果未能解决你的问题,请参考以下文章

添加reactstrap工具提示会导致TypeError:target.removeEventListener不是函数

在调用列表中的字典中的值时收到“TypeError:列表索引必须是整数或切片,而不是字典”

TypeError:字符串索引必须是整数,而不是 Python 字典中的 str

TypeError:无法使用nodejs在mongodb中读取null的属性“项目”

在 kendoUI 中添加新行会导致 TypeError: Cannot read property 'replace' of undefined

使用字典计算列表中的项目[重复]