#python #list #dictionary
#python #Список #словарь
Вопрос:
Я пытаюсь получить доступ только к ключам словаря в списке, который содержит целые числа и строки. Вот пример того, как выглядит этот список:
list =[
101, a, e, {'a': 1, 'b': 2},
202, b, f, {'c': 2, 'd': 3},
303, c, g, {'e': 3, 'b': 4},
404, d, h, {'g': 2, 'h': 4},
505, d, i, {'i': 3, 'j': 4}
]
Я могу получить доступ к каждому элементу списка, но не уверен, как получить доступ к словарям каждого элемента.
Комментарии:
1. Каков ожидаемый результат?
2. Не рекомендуется использовать
list
в качестве имени
Ответ №1:
Прежде всего, не используйте встроенные ключевые слова языка, например list
, для переменных, это может вызвать очень неприятные ошибки в вашем коде. Чтобы получить ключи словарей, выполните цикл по списку и проверьте, является ли текущее значение словарем, например:
l = [
101, 'a', 'e', {'a': 1, 'b': 2},
202, 'b', 'f', {'c': 2, 'd': 3},
303, 'c', 'g', {'e': 3, 'b': 4},
404, 'd', 'h', {'g': 2, 'h': 4},
505, 'd', 'i', {'i': 3, 'j': 4}
]
keys = [
list(d.keys()) for d in l if isinstance(d,dict)
]
print(keys)
>>> [['a', 'b'], ['c', 'd'], ['e', 'b'], ['g', 'h'], ['i', 'j']]
Комментарии:
1.
list
не является зарезервированным ключевым словом (not inkeyword.kwlist
) синтаксически невозможно назначить ключевое слово в python 3 (например, tryTrue = 'a'
). список является встроенным, и лучше всего его затенять2. @Chris_Rands ты прав! Это то, что я имел в виду.
3. также просто
[list(d) for d in l if isinstance(d, dict)]
4. я предпочитаю
list(d.keys())
, чтобы он был более подробным, но его легче читать, чемlist(d)
.