Как отфильтровать упорядоченный словарь в Python, используя Django? - PullRequest
1 голос
/ 18 июня 2019

На самом деле я новичок в Python. Работа с Python, Django и Mysql. Я пытался отфильтровать некоторые данные из упорядоченного словаря, который я получил при получении данных из базы данных mySQL. Все данные находятся в переменной. Но я хочу сохранить некоторые из них в другой переменной ...

Это мой файл view.py ...

all_dataobj=fetchdata.objects.all()
pserializer=fetchdataSerializers(all_dataobj,many=True)
p = pserializer.data
print(p)

И я получаю такие данные ...

[OrderedDict([('id', 1), ('first_name', 'raunak'), ('middle_name', 'yy'), ('last_name', 'ron')]),
 OrderedDict([('id', 2), ('first_name', 'josh'), ('middle_name', 'yy'), ('last_name', 'mod')]),
 OrderedDict([('id', 3), ('first_name', 'david'), ('middle_name', 'yy'), ('last_name', 'cop')]),
 OrderedDict([('id', 4), ('first_name', 'bob'), ('middle_name', 'zj'), ('last_name', 'go')])]

Теперь я хочу отфильтровать этот упорядоченный словарь и сохранить данные идентификаторов 1 и 2 только в переменной. Итак, если я напечатаю переменную результата, она должна выглядеть следующим образом ...

[OrderedDict([('id', 1), ('first_name', 'raunak'), ('middle_name', 'yy'), ('last_name', 'ron')]),
 OrderedDict([('id', 2), ('first_name', 'josh'), ('middle_name', 'yy'), ('last_name', 'mod')])]

Пожалуйста, помогите мне ... я застрял очень долго ... Как я могу получить это ??

1 Ответ

1 голос
/ 18 июня 2019

Вы можете перебирать список и выбирать только те id, которые вам нужны

ids_to_get = [1, 2]
#Loop over the list and select only the id's you want
res = [item for item in li if item.get('id') in ids_to_get]
print(res)

Выходные данные будут

[OrderedDict([('id', 1), ('first_name', 'raunak'), ('middle_name', 'yy'), ('last_name', 'ron')]),
 OrderedDict([('id', 2), ('first_name', 'josh'), ('middle_name', 'yy'), ('last_name', 'mod')])]

Если диапазон идентификаторов должен бытьПри рассмотрении, скажем, от 1 до 100 включительно обоих пределов, можно использовать условное выражение

res = [item for item in li if 1 <= item.get('id') <= 100]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...