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

Программы на Python
Anonymous
Как найти уникальное значение ключа из списка словаря для создания нового списка

Сообщение Anonymous »

У меня есть список ниже:

Код: Выделить всё

asset_list =
[
{'cid': 60, 'client_id': '232-00000004', 'prem_id': 'PID-1', 'state': 'Alabama', 'rid': 103, 'total_premid': 0, 'total_site': 0, 'producer': 'HIK'},
{'cid': 60, 'client_id': '232-00000004', 'prem_id': 'PID-2', 'state': 'Alaska', 'rid': 104, 'total_premid': 0, 'total_site': 0, 'producer': 'HIK'},
{'cid': 64, 'client_id': '232-00000008', 'prem_id': 'PID-3', 'state': 'Alabama', 'rid': 105, 'total_premid': 0, 'total_site': 0, 'producer': 'TF Inc.'},
{'cid': 64, 'client_id': '232-00000008', 'prem_id': 'PID-3', 'state': 'Alabama', 'rid': 105, 'total_premid': 0, 'total_site': 0, 'producer': 'TF Inc.'},
{'cid': 64, 'client_id': '232-00000008', 'prem_id': 'PID-4', 'state': 'Arizona', 'rid': 106, 'total_premid': 0, 'total_site': 0, 'producer': 'TF Inc.'},
{'cid': 64, 'client_id': '232-00000008', 'prem_id': 'PID-5', 'state': 'California', 'rid': 107, 'total_premid': 0, 'total_site': 0, 'producer': 'TF Inc.'},
{'cid': 60, 'client_id': '232-00000004', 'prem_id': 'PID-7', 'state': 'Alabama', 'rid': 108, 'total_premid': 0, 'total_site': 0, 'producer': 'HIK'}

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

Код: Выделить всё

[
{'producer': 'HIK', 'state': 'Alabama'},
{'producer': 'HIK', 'state': 'Alaska'},
{'producer': 'TF Inc.', 'state': 'Alabama'},
{'producer': 'TF Inc.', 'state': 'Arizona'},
{'producer': 'TF Inc.', 'state': 'California'},
]
Чтобы решить эту проблему, я сначала получаю все уникальные имена производителей:

Код: Выделить всё

producer_unique_list = []
for producer in asset_list:
if producer['producer'] not in producer_unique_list:
producer_unique_list.append(producer['producer'])
а затем сравните производителя для каждого актива со списком Produce_unique_list, добавляя только записи, в которых (производитель, состояние) уникальны:

Код: Выделить всё

producer_list = []
run_once = True
for ass in asset_list:
p_d = dict()
if run_once:
p_d['producer'] = ass['producer']
p_d['state'] = ass['state']
producer_list.append(p_d)
run_once = False
else:
for y in producer_list:
if ass['producer'] != y['producer'] or ass['state'] != y['state']:
p_d = dict()
p_d['producer'] = ass['producer']
p_d['state'] = ass['state']
producer_list.append(y)
Но похоже, эта логика не работает. Как я могу это решить?

Подробнее здесь: https://stackoverflow.com/questions/703 ... e-new-list

Вернуться в «Python»