如何在Python中通过属性值获取数组列表中的对象

vit*_*tto 4 python list object

我正在尝试编写一个Sublime Text 2插件并在文件中获取一些值.subilme-settings

{
"files":
    [
        {
            "name" : "Markdown",
            "extension" : ".md"
        },{
            "name" : "Python",
            "extension" : ".py"
        },{
            "name" : "Sublime Text Setting",
            "extension" : ".sublime-settings"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这是我第一次使用Python,我不知道该怎么做,确实存在这样的东西:

my_array.indexOf({"extension":".py"})
Run Code Online (Sandbox Code Playgroud)

aba*_*ert 5

Python 列表确实有一个index方法。但它只找到等于参数的值,而不是具有与您的部分值匹配的参数的值。

\n\n

Python 中确实没有任何东西可以像这样找到部分结构匹配;您可以搜索/过滤/等等。关于相等,或者关于谓词函数,但是您必须自己编写其他任何内容。

\n\n

最简单的方法是使用循环。你可以明确地写它:

\n\n
for index, element in enumerate(my_array):\n    if element["extension"] == ".py":\n        return index\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 或在理解中:

\n\n
return next(index for index, element in enumerate(array)\n            if element["extension"] == ".py")\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者,您可以将匹配转换为函数,并将其传递给filter,或将其用作key更复杂的高阶函数中的函数,但这里似乎没有任何真正的优势。

\n\n

当然,indexOf如果您愿意,您可以编写自己的类似函数来匹配部分结构。

\n