我需要从我的JSON中获取"sid“值
{
"response": [
{
"customName": "name-1",
"sid": "1247azc08belr2q4"
},
{
"customName": "name-2",
"sid": "zz63p2xxeh32b661"
},
{
"customName": "name-3",
"sid": "aa88p2xfeh32e661"
}
]
}我试着做
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”。请帮我解决这个问题。
发布于 2019-11-02 06:24:40
您可以使用此片段返回所有3个sid值..。
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')发布于 2019-11-02 06:20:19
这将在列表sids中存储所有相关的‘sid’-值。使用json库可以很容易地做到这一点,如下所示。此外,我使用列表理解使您的代码更加简洁。
import json
d = json.loads(s)
sids = [customer['sid'] for customer in d['response'] if (customer['customName']=='name-3')]
print(sids)输出:
['aa88p2xfeh32e661']如果希望从所有客户获得
sid值,可以使用以下代码。
sids = [customer['sid'] for customer in d['response']]虚拟数据
s = """
{
"response": [
{
"customName": "name-1",
"sid": "1247azc08belr2q4"
},
{
"customName": "name-2",
"sid": "zz63p2xxeh32b661"
},
{
"customName": "name-3",
"sid": "aa88p2xfeh32e661"
}
]
}
"""发布于 2019-11-02 06:40:22
我勾勒出了一个简单的解决方案,可以满足你的需要。
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当您调用它时,结果将是您需要的项:
>>> item = grab_item_by_attr(data['response'], 'customName', 'name-3')
>>> item
{'customName': 'name-3', 'sid': 'aa88p2xfeh32e661'}
>>> item['sid']
'aa88p2xfeh32e661'希望能帮上忙!
https://stackoverflow.com/questions/58668678
复制相似问题