Понимание списка на языке Python для преобразования списка dictd в список кортежей с подмножеством пар ключ-значение dict

#python #list #dictionary #list-comprehension

#python #Список #словарь #понимание списка

Вопрос:

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

Источник

 source = [
  {'gem': 'gold', 'dimensions': {"weight":120, "height":0, "color":240}, 'shine': '90', 'worth': 10000}, 
  {'gem': 'diamond', 'dimensions': {"weight":80, "height":20, "color":10}, 'shine': '190', 'worth': 5000}
  ...
]
  

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

 [(120, 240),(80, 10) ]
  

Каждый кортеж в списке основан на dict с соответствующим индексом в источнике, но для включения в тип выбираются только части вложенного dict:

Требуемый набор данных

 [(dimensions.weight, dimensions.color), ...]
  

Я пробовал несколько разных вещей, но не могу продвинуться дальше этого:

 [g["dimensions"] for g in source]
  

что дает

 [{"weight":120, "height":0, "color":240}, {"weight":80, "height":20, "color":10}]
  

Ответ №1:

Вы так близки, просто нужно указать значения, которые вы хотите включить в кортеж

 [(g["dimensions"]["weight"], g["dimensions"]["color"]) for g in source]
  

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

1. Конечно, нет проблем 🙂