Python: как получить поле id внутри словаря, который находится внутри списка - PullRequest
0 голосов
/ 15 мая 2019

Я хочу получить идентификатор dict, который удовлетворяет условию (если текущий день в любом графике)

arr = [
  {
    "schedule": "Mon - Wed - Fri",
    "id": 1
  },
  {
    "schedule": "Mon - Tue - Wed - Thu - Fri",
    "id": 2
  },
  {
    "schedule": "Fri - Sat - Sun",
    "id": 3
  },
  {
    "schedule": "Mon - Wed - Fri - Sat",
    "id": 4
  },
  {
    "schedule": "Sat - Sun - Mon - Tue",
    "id": 5
  }
]

Я пытался:

day = "Wed"

for listArr in arr:
    array = listArr.values()
    str1 = " - ".join(array)
    strArr = str1.split(" - ")

    if any(day in i for i in strArr):
        print(strArr)

Я получаю:

TypeError: sequence item 1: expected string, int found

Что я хочу:

[1, 2, 4]

Я пытался преобразовать int в str, но он возвращает пустое или пустое значение. Любая помощь?

Ответы [ 2 ]

1 голос
/ 15 мая 2019
day = "Wed"
print([l['id'] for l in arr if day in l['schedule']])
0 голосов
/ 15 мая 2019

Ты делаешь это намного сложнее, чем нужно.Вам просто нужно получить значение id для каждого элемента в списке.

Итак:

for item in arr:
    if day in item['schedule']
        print(item['id'])

Хотя, если вам нужно собрать идентификаторы, а не просто распечатать их, списокпонимание будет лучше:

result = [item['id'] for item in arr if day in item['schedule']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...