首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我匹配一个单独的键,那么迭代这个数据集返回来自另一个键值对的所有匹配值的最佳方法是什么?

如果我匹配一个单独的键,那么迭代这个数据集返回来自另一个键值对的所有匹配值的最佳方法是什么?
EN

Stack Overflow用户
提问于 2022-06-28 03:24:01
回答 3查看 47关注 0票数 0

我希望能够搜索这个列表(见文章的底部)的dicts (我认为这是这个特殊的安排是什么)搜索一个‘地址’匹配‘0xd 2’。如果找到匹配,我希望返回/打印所有相应的id。

因此,在这种情况下,我想返回: 632,315,432,100

我能够提取出这样的单个值:

代码语言:javascript
复制
none = None
print(my_dict['result'][2]["id"])

432

我很难找到一个循环来正确地做这件事。

代码语言:javascript
复制
{
  "total": 4,
  "page": 0,
  "page_size": 100,
  "result": [
    {
      "address": "0xd2",
      "id": "632",
      "amount": "1",
      "name": "Avengers",
      "group": "Marvel",
      "uri": "https://google.com/",
      "metadata": null,
      "synced_at": "2022-05-26T22:52:34.113Z",
      "last_sync": "2022-05-26T22:52:34.113Z"
    },
    {
      "address": "0xd2",
      "id": "315",
      "amount": "1",
      "name": "Avengers",
      "group": "Marvel",
      "uri": "https://google.com/",
      "metadata": null,
      "synced_at": "2022-05-26T22:52:34.113Z",
      "last_sync": "2022-05-26T22:52:34.113Z"
    },
    {
      "address": "0xd2",
      "id": "432",
      "amount": "1",
      "name": "Avengers",
      "group": "Marvel",
      "uri": "https://google.com/",
      "metadata": null,
      "synced_at": "2022-05-26T22:52:34.113Z",
      "last_sync": "2022-05-26T22:52:34.113Z"
    },
{
      "address": "0x44",
      "id": "100",
      "amount": "1",
      "name": "Suicide Squad",
      "group": "DC",
      "uri": "https://google.com/",
      "metadata": null,
      "synced_at": "2022-05-26T22:52:34.113Z",
      "last_sync": "2022-05-26T22:52:34.113Z"
    }
  ],
  "status": "SYNCED"
}
EN

回答 3

Stack Overflow用户

发布于 2022-06-28 03:34:58

欢迎来到StackOverflow。

你可以试着理解列表:

代码语言:javascript
复制
[res["id"] for res in my_dict["result"] if res["address"] == "0xd2"]

如果您想使用for循环:

代码语言:javascript
复制
l = []
for res in my_dict["result"]:
    if res["address"] == "0xd2":
        l.append(res["id"])
票数 0
EN

Stack Overflow用户

发布于 2022-06-28 03:37:24

你可以使用列表理解。

代码语言:javascript
复制
import json

json_string = """{
  "total": 4,
  "page": 0,
  "page_size": 100,
  "result": [
    {
      "address": "0xd2",
      "id": "632",
      "amount": "1",
      "name": "Avengers",
      "group": "Marvel",
      "uri": "https://google.com/",
      "metadata": null,
      "synced_at": "2022-05-26T22:52:34.113Z",
      "last_sync": "2022-05-26T22:52:34.113Z"
    },
    {
      "address": "0xd2",
      "id": "315",
      "amount": "1",
      "name": "Avengers",
      "group": "Marvel",
      "uri": "https://google.com/",
      "metadata": null,
      "synced_at": "2022-05-26T22:52:34.113Z",
      "last_sync": "2022-05-26T22:52:34.113Z"
    },
    {
      "address": "0xd2",
      "id": "432",
      "amount": "1",
      "name": "Avengers",
      "group": "Marvel",
      "uri": "https://google.com/",
      "metadata": null,
      "synced_at": "2022-05-26T22:52:34.113Z",
      "last_sync": "2022-05-26T22:52:34.113Z"
    },
{
      "address": "0x44",
      "id": "100",
      "amount": "1",
      "name": "Suicide Squad",
      "group": "DC",
      "uri": "https://google.com/",
      "metadata": null,
      "synced_at": "2022-05-26T22:52:34.113Z",
      "last_sync": "2022-05-26T22:52:34.113Z"
    }
  ],
  "status": "SYNCED"
}"""

json_dict = json.loads(json_string)

result = [elem['id'] for elem in json_dict['result'] if elem['address'] == '0xd2']

print(result)

输出:

代码语言:javascript
复制
['632', '315', '432']
票数 0
EN

Stack Overflow用户

发布于 2022-06-28 03:37:26

这将在列表中存储相关的in:

代码语言:javascript
复制
ids=[]
for r in dataset.get('result'):
    if r.get('address')=='0xd2':
        ids.append(r.get('id'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72780415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档