Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 标识项目在json文件中的位置_Python_Json_Dictionary_Indexing_Dictionary Comprehension - Fatal编程技术网

Python 标识项目在json文件中的位置

Python 标识项目在json文件中的位置,python,json,dictionary,indexing,dictionary-comprehension,Python,Json,Dictionary,Indexing,Dictionary Comprehension,假设我有以下json文件。使用data1[“租户”][1][name']我可以选择uniquename2。有没有办法通过循环文档来收集“1”号 { "tenants": [{ "key": "identifier", "name": "uniquename", "image": "url&

假设我有以下json文件。使用
data1[“租户”][1][name']
我可以选择uniquename2。有没有办法通过循环文档来收集“1”号

{
    "tenants": [{
            "key": "identifier",
            "name": "uniquename",
            "image": "url",
            "match": [
                "identifier"
            ],
            "tags": [
                "tag1",
                "tag2"
            ]
        },
        {
            "key": "identifier",
            "name": "uniquename2",
            "image": "url",
            "match": [
                "identifier1",
                "identifier2"
            ],
            "tags": ["tag"]
        }
    ]
}
简而言之:
data1[“租户”][1]['name']
=uniquename2
data1[“租户”][0]['name']
=uniquename
我怎样才能知道哪个号码有哪个名字。因此,如果我有uniquename2,那么它对应的数字/索引是什么?

假设您已经将json转换为字典,这就是如何获取列表中某个名称的首个出现的索引(这取决于名称实际上是唯一的):


您可以迭代租户以将索引映射到名称

数据={
“租户”:[{
“密钥”:“标识符”,
“名称”:“唯一名称”,
“图像”:“url”,
“匹配”:[
“标识符”
],
“标签”:[
“tag1”,
“tag2”
]
},
{
“密钥”:“标识符”,
“名称”:“uniquename2”,
“图像”:“url”,
“匹配”:[
“识别者1”,
“标识符2”
],
“标记”:[“标记”]
}
]
}
对于索引,枚举中的租户(数据['tenants']):
打印(索引,租户['name'])
输出

0唯一名称
1唯一名称2
data = {
    "tenants": [{
            "key": "identifier",
            "name": "uniquename",
            "image": "url",
            "match": [
                "identifier"
            ],
            "tags": [
                "tag1",
                "tag2"
            ]
        },
        {
            "key": "identifier",
            "name": "uniquename2",
            "image": "url",
            "match": [
                "identifier1",
                "identifier2"
            ],
            "tags": ["tag"]
        }
    ]
}

def index_of(tenants, tenant_name):
    try:
        return tenants.index(
            next(
                tenant for tenant in tenants
                if tenant["name"] == tenant_name
            )
        )
    except StopIteration:
        raise ValueError(
            f"tenants list does not have tenant by name {tenant_name}."
        )

index_of(data["tenants"], "uniquename")  # 0