Как получить определенные значения из вложенного списка в Python

Не могли бы вы помочь мне получить конкретные значения, которые я хотел, в списке ниже?

list=[['Russia',[{'id': 250282,'d_id': 19553,'p_id': 1796,'value': 'silver'},
                {'id': 250212,'d_id': 19553,'p_id': 1896,'value': 'gold'},
                {'id': 250242,'d_id': 19553,'p_id': 1396,'value': 'iron'},
                {'id': 250082,'d_id': 19553,'p_id': 1496,'value': 'cobalt'}]],
      ['China',[{'id': 210282,'d_id': 193,'p_id': 1196,'value': 'silver'},
                {'id': 220212,'d_id': 193,'p_id': 1396,'value': 'iron'},
                {'id': 240242,'d_id': 193,'p_id': 1586,'value': 'iron'},
                {'id': 250082,'d_id': 193,'p_id': 1492,'value': 'gold'}]],
      ['Africa',[]],
      ['USA',[{'id': 200282,'d_id': 5531,'p_id': 1093,'value': 'iron'},
                {'id': 253212,'d_id': 5531,'p_id': 1843,'value': 'gold'},
                {'id': 255242,'d_id': 5531,'p_id': 1323,'value': 'iron'},
                {'id': 257082,'d_id': 5531,'p_id': 1409,'value': 'cobalt'}]],
      ['UK',[]]]


output should be:
  'Russia', 19553
  'China',  193
  'Africa', 0  
  'USA',    5531
  'UK',     0

Я пытаюсь получить страны и уникальные значения d_id, потому что они будут одинаковыми для всех записей и вменят отсутствующие значения с 0

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

вывод должен быть: 'Россия', 19553 'Китай', 193 'Африка', 0
'США', 5531 'Великобритания', 0

В приведенном выше выводе значения d_id для Африки и Великобритании равны 0.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
75
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

В следующий раз вы должны включить код, который вы пробовали, в свой вопрос.

{l[0]: set([_d['d_id'] for _d in l[1]]) if len(l[1]) > 0 else set([0]) for l in your_list}

Ваши внутренние списки имеют 2 значения - название страны и список записей. Вы можете перебрать список, используя расширение кортежа, чтобы получить эти два значения. Если список записей не пуст, возьмите первое значение, иначе используйте ноль.

list=[['Russia',[{'id': 250282,'d_id': 19553,'p_id': 1796,'value': 'silver'},
                {'id': 250212,'d_id': 19553,'p_id': 1896,'value': 'gold'},
                {'id': 250242,'d_id': 19553,'p_id': 1396,'value': 'iron'},
                {'id': 250082,'d_id': 19553,'p_id': 1496,'value': 'cobalt'}]],
      ['China',[{'id': 210282,'d_id': 193,'p_id': 1196,'value': 'silver'},
                {'id': 220212,'d_id': 193,'p_id': 1396,'value': 'iron'},
                {'id': 240242,'d_id': 193,'p_id': 1586,'value': 'iron'},
                {'id': 250082,'d_id': 193,'p_id': 1492,'value': 'gold'}]],
      ['Africa',[]],
      ['USA',[{'id': 200282,'d_id': 5531,'p_id': 1093,'value': 'iron'},
                {'id': 253212,'d_id': 5531,'p_id': 1843,'value': 'gold'},
                {'id': 255242,'d_id': 5531,'p_id': 1323,'value': 'iron'},
                {'id': 257082,'d_id': 5531,'p_id': 1409,'value': 'cobalt'}]],
      ['UK',[]]]


output = []
for name, records in list:
    if records:
        d_id = records[0]['d_id']
    else:
        d_id = 0
    output.append((name, d_id))

for name, d_id in output:
    print(f"    '{name}': {d_id}")
Ответ принят как подходящий
for item in list:
    country = item[0]
    metal = item[1]
    d_id = []
    for details in metal:
        for ids in details:
            if ids == 'd_id':
                d_id.append(details[ids])
    d_id = set(d_id)

if len(d_id):
    print(f"{country},{d_id}")
else:
    print(f"{country},0")

Другие вопросы по теме