#python #python-3.x
#python #python-3.x
Вопрос:
У меня есть ответ со многими «элементами» в «содержимом», выглядящими следующим образом.
Для примера я сократил его до 3 «элементов» с каждым из 3 элементов:
{
"code": 0,
"data": {
"content": [
{
"userid": 1,
"username": "user1",
"city": "city1",
},
{
"userid": 2,
"username": "user2",
"city": "city2",
},
{
"userid": 3,
"username": "user3",
"city": "city3",
}
],
"number": 0,
"size": 0,
"totalElements": 3
},
"message": "SUCCESS",
"serverTime": 1611071504886,
"success": true
}
Как мне искать, например
если идентификатор пользователя == 2
затем получить / распечатать все необработанные данные; ключи, значения в { }, связанные с идентификатором пользователя
Ответ №1:
Если ваш ответ такой, как вы показываете, то одним из возможных, но немного грязных, решений может быть:
x = {
"code": 0,
"data": {
"content": [
{
"userid": 1,
"username": "user1",
"city": "city1",
},
{
"userid": 2,
"username": "user2",
"city": "city2",
},
{
"userid": 3,
"username": "user3",
"city": "city3",
}
],
"number": 0,
"size": 0,
"totalElements": 3
},
"message": "SUCCESS",
"serverTime": 1611071504886,
"success": True
}
for i in range(len(x['data']['content'])):
if (x['data']['content'][i]).get('userid') == 2:
print(x['data']['content'][i])
print(x['data']['content'][i])
дает:
{'userid': 2, 'username': 'user2', 'city': 'city2'}
Другое альтернативное решение, аналогичное приведенному выше, но немного более аккуратное — извлечь список и затем перебрать его:
a = x['data']['content'] # <-- gets the list and assigns it to variable a
for i in range(len(a)):
if (a[i]).get('userid') == 2:
print(a[i])
Ответ №2:
Сначала вам нужно будет перебрать dicts внутри и содержимое, затем вы можете использовать if
его для фильтрации:
for x in output['content']:
if x.get('userid',None) == 2:
print(x)
Комментарии:
1. Лучшим ответом было бы использование метода get, поскольку метод get не вызывает a
KeyError
, если нет ключа.