Не могли бы вы помочь мне получить конкретные значения, которые я хотел, в списке ниже?
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.






В следующий раз вы должны включить код, который вы пробовали, в свой вопрос.
{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")
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, такие как цитаты или документация, чтобы другие могли подтвердить правильность вашего ответа. Вы можете найти больше информации о том, как писать хорошие ответы в справочном центре.