在字典中添加来自列表的项目导致 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