gpt4 book ai didi

python - 在 python 中反转 dict 和访问它的值的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:33 27 4
gpt4 key购买 nike

虽然下面的代码完美地打印出 cba mypy 提示它。

main.py:10: error: No overload variant of "reversed" matches argument types [typing.ValuesView[builtins.str*]]

逆序遍历x并获取值的正确方法是什么?

from collections import OrderedDict

def main() -> None:
x = OrderedDict([
(1, 'a'),
(2, 'b'),
(3, 'c'),
])

for y in reversed(x.values()):
print(y)


if __name__ == '__main__':
main()

最佳答案

这是因为 OrderedDict 字典 View 确实实现了 __reversed__ 但没有从 collections.abc.Reversible 继承(值 View 确实继承来自 collections.abc.ValuesView)。

这可以通过在 Python 标准库中添加该基类和更新 Python Typeshed definition 来解决。 .我有 filed an issue with the latter ,因为这是获得修复的更快方法。

你可以克隆我的 pull-request分支以在本地获取新定义,然后使用 --custom-typeshed-dir 切换到 mypy 以在编译到 mypy 本身的那个上使用它:

git clone https://github.com/mjpieters/typeshed.git \
--branch ordereddict_views_reversible \
~/typeshed_ordereddict_views_reversible # or a different location
mypy --custom-typeshed-dir ~/typeshed_ordereddict_views_reversible <yourproject>

关于python - 在 python 中反转 dict 和访问它的值的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50018001/

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