Получение значений словаря, содержащегося в списке списков

#python #python-3.x #list

#python #python-3.x #Список

Вопрос:

Наличие списка, подобного:

 my_list = [
  [{'score':9, 'name':'Jack'}],
  [{'score':3, 'name':'Danielle'}]
]
 

Я пытаюсь выполнить итерацию по этому списку, но не могу понять, как получить доступ к значениям.

 for listing in my_list:
  print(listing['score'])
 

Вышеуказанное не работает. Я понимаю, что я, похоже, работаю со словарем, который все еще находится внутри второго списка. Однако у меня возникли проблемы с поиском правильного способа получить доступ.

Комментарии:

1. синтаксис неверен.

2. Словари создаются с {...} помощью, а не [...] .

3. @VishalSingh Я это исправил. Попытался сделать минимальный пример проблемы, и я думаю, что моя голова где-то в космосе. 🙂

Ответ №1:

Вы можете попробовать это, точно сопоставив сигнатуру внутренних элементов. Это называется tuple unpacking

 my_list = [
  [{'score':9, 'name':'Jack'}],
  [{'score':3, 'name':'Danielle'}]
]
for [listing] in my_list:
    print(listing['score'])
# 9
# 3
 

Ответ №2:

Вы используете неправильный синтаксис для словарей python.

Словари Python объявляются между {...} .

Ваш список должен выглядеть следующим образом:

 my_list = [
  {'score':9, 'name':'Jack'},
  {'score':3, 'name':'Danielle'}
]
 

Редактировать:
В вашем редактировании у вас есть список внутри списка. Попробуйте

 for listing in my_list:
  print(listing[0]['score'])
 

Комментарии:

1. Мой пример был неверным. Я перепутал создание минимального примера. Исправлено.

Ответ №3:

Вы создаете 2D-список, внутри которого вам нужны словари

 my_list = [
  {'score':9, 'name':'Jack'},
  {'score':3, 'name':'Danielle'}
]
for listing in my_list:
  print(listing['score'])
 

Комментарии:

1. Мой пример был неверным. Я перепутал создание минимального примера. Исправлено.

Ответ №4:

Вам нужно 2 цикла, один для внешнего списка и один для внутреннего списка:

 my_list = [
     [{'score':9, 'name':'Jack'}],
     [{'score':3, 'name':'Danielle'}]
]

for sublist in my_list:
     for dct in sublist:
          print(dct['score'])
# 9
# 3
 

Вы также можете использовать понимание вложенных списков:

 print([dct['score'] for sublist in my_list for dct in sublist])
# [9, 3]
 

Ответ №5:

Вам нужно создать элементы внутри вашего списка с {} помощью, а не [] .

 my_list = [
  {'score':9, 'name':'Jack'},
  {'score':3, 'name':'Danielle'}
]
 

[] создаст a list , в то время {} как создаст a dict .

Комментарии:

1. Мой пример был неверным. Я перепутал создание минимального примера. Исправлено.