Доступ к элементам в словаре в списке

#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 in keyword.kwlist ) синтаксически невозможно назначить ключевое слово в python 3 (например, try True = 'a' ). список является встроенным, и лучше всего его затенять

2. @Chris_Rands ты прав! Это то, что я имел в виду.

3. также просто [list(d) for d in l if isinstance(d, dict)]

4. я предпочитаю list(d.keys()) , чтобы он был более подробным, но его легче читать, чем list(d) .