AttributeError:“dict_values”对象没有属性“index”

2024-05-28 19:09:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将Python2.x转换为Python3.x代码,它抛出以下错误:

Python 3.7.8 (default, Jun 29 2020, 05:46:05) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> config_order = {
...                     'groups.jinja2': 0 ,
...                     'system.jinja2': 1 ,
...                     'interfaces.jinja2': 2,
...                     'chassis.jinja2': 3 ,
...                     'snmp.jinja2': 4 ,
...                     'routing-options.jinja2': 5 ,
...                     'policy-options.jinja2': 6 ,
...                     'security.jinja2': 7 ,
...                     'routing-instances.jinja2': 8
...         }
>>> template = config_order.keys()[config_order.values().index(element)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict_values' object has no attribute 'index'
>>> 

如何将字典值转换为列表,以便使用“索引”功能


Tags: 代码configdefaultjinja2indexon错误order
1条回答
网友
1楼 · 发布于 2024-05-28 19:09:12

在Python字典中按值查找键

您需要将config_order.keys()config_order.values()转换为列表:

list(config_order.keys())[list(config_order.values()).index(element)]

但这个解决方案很难理解。考虑这个问题:

next(k for k, v in config_order.items() if v == element)

或者,如果需要容错/默认值:

next((k for k, v in config_order.items() if v == 10), None)

示例:

next(k for k, v in config_order.items() if v == 7)

输出:

'security.jinja2'

next((k for k, v in config_order.items() if v == 70), 'default')

输出:

'default'

相关问题 更多 >

    热门问题