gpt4 book ai didi

python - 类型错误:+ 不支持的操作数类型: 'dict_keys' 和 'list'

转载 作者:太空狗 更新时间:2023-10-29 20:35:21 25 4
gpt4 key购买 nike

我正在尝试使用一个名为 bidi 的 Python 包。在此包 (algorithm.py) 的模块中,有些行会给我错误,尽管它是包的一部分。

这是几行:

_LEAST_GREATER_ODD = lambda x: (x + 1) | 1
_LEAST_GREATER_EVEN = lambda x: (x + 2) & ~1

X2_X5_MAPPINGS = {
'RLE': (_LEAST_GREATER_ODD, 'N'),
'LRE': (_LEAST_GREATER_EVEN, 'N'),
'RLO': (_LEAST_GREATER_ODD, 'R'),
'LRO': (_LEAST_GREATER_EVEN, 'L'),
}

# Added 'B' so X6 won't execute in that case and X8 will run its course
X6_IGNORED = X2_X5_MAPPINGS.keys() + ['BN', 'PDF', 'B']
X9_REMOVED = X2_X5_MAPPINGS.keys() + ['BN', 'PDF']

如果我在 Python 3 中运行代码,我会收到此错误消息:

Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
from bidi.algorithm import get_display
File "C:\Python33\lib\site-packages\python_bidi-0.3.4-py3.3.egg\bidi\algorithm.py", line 41, in <module>
X6_IGNORED = X2_X5_MAPPINGS.keys() + ['BN', 'PDF', 'B']
TypeError: unsupported operand type(s) for +: 'dict_keys' and 'list'

虽然这是 bidi 包的一部分,但为什么会出现此错误?它与我的 Python 版本有什么关系吗?感谢您对此提供的任何帮助。

最佳答案

在 Python 3.x 中,dict.keys 返回 dictionary view :

>>> a = {1:1, 2:2}
>>> a.keys()
dict_keys([1, 2])
>>> type(a.keys())
<class 'dict_keys'>
>>>

您可以通过将这些 View 放入 list 来获得您想要的内容:

X6_IGNORED = list(X2_X5_MAPPINGS.keys()) + ['BN', 'PDF', 'B']
X9_REMOVED = list(X2_X5_MAPPINGS.keys()) + ['BN', 'PDF']

实际上,您甚至不再需要 .keys,因为遍历字典会产生它的键:

X6_IGNORED = list(X2_X5_MAPPINGS) + ['BN', 'PDF', 'B']
X9_REMOVED = list(X2_X5_MAPPINGS) + ['BN', 'PDF']

关于python - 类型错误:+ 不支持的操作数类型: 'dict_keys' 和 'list',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com