首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python,JSON如何从同名键中获得值?

Python,JSON如何从同名键中获得值?
EN

Stack Overflow用户
提问于 2019-11-02 06:08:00
回答 3查看 357关注 0票数 0

我需要从我的JSON中获取"sid“值

代码语言:javascript
复制
{
    "response": [
        {
            "customName": "name-1",
            "sid": "1247azc08belr2q4"
            },
        {
            "customName": "name-2",
            "sid": "zz63p2xxeh32b661"
            },
        {
            "customName": "name-3",
            "sid": "aa88p2xfeh32e661"
            }
    ]
}

我试着做

代码语言:javascript
复制
customName_1 = 'name-1'
customName_2 = 'name-2'
customName_3 = 'name-3'
for name in My_JSON['response']:
        if name['customName'] == customName_3:
            print(name['sid'])
        else:
            print('Cant get sid')

但这不是工作,因为我从第一个"customName“(名称-1)中获取"sid”。请帮我解决这个问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-02 06:24:40

您可以使用此片段返回所有3个sid值..。

代码语言:javascript
复制
MY_JSON = {
        "response": [
            {
                "customName": "name-1",
                "sid": "1247azc08belr2q4"
                },
            {
                "customName": "name-2",
                "sid": "zz63p2xxeh32b661"
                },
            {
                "customName": "name-3",
                "sid": "aa88p2xfeh32e661"
                }
        ]
    }

names = ["name-1", "name-2", "name-3"];

for name in MY_JSON['response']:
    if name['customName'] in names:
        print(name['sid'])
    else:
        print('Cant get sid')
票数 1
EN

Stack Overflow用户

发布于 2019-11-02 06:20:19

这将在列表sids中存储所有相关的‘sid’-值。使用json库可以很容易地做到这一点,如下所示。此外,我使用列表理解使您的代码更加简洁。

代码语言:javascript
复制
import json

d = json.loads(s)
sids = [customer['sid'] for customer in d['response'] if (customer['customName']=='name-3')]
print(sids)

输出

代码语言:javascript
复制
['aa88p2xfeh32e661']

如果希望从所有客户获得sid值,可以使用以下代码。

代码语言:javascript
复制
sids = [customer['sid'] for customer in d['response']]

虚拟数据

代码语言:javascript
复制
s = """
{
    "response": [
        {
            "customName": "name-1",
            "sid": "1247azc08belr2q4"
            },
        {
            "customName": "name-2",
            "sid": "zz63p2xxeh32b661"
            },
        {
            "customName": "name-3",
            "sid": "aa88p2xfeh32e661"
            }
    ]
}
"""
票数 1
EN

Stack Overflow用户

发布于 2019-11-02 06:40:22

我勾勒出了一个简单的解决方案,可以满足你的需要。

代码语言:javascript
复制
def grab_item_by_attr(lst, attr_name, attr_value):
  result = None

  for item in lst:
    if item[attr_name] == attr_value:
      result = item

  return result

当您调用它时,结果将是您需要的项:

代码语言:javascript
复制
>>> item = grab_item_by_attr(data['response'], 'customName', 'name-3')
>>> item
{'customName': 'name-3', 'sid': 'aa88p2xfeh32e661'}
>>> item['sid']
'aa88p2xfeh32e661'

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58668678

复制
相关文章

相似问题

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