Я просто изучаю Python с помощью Python 2.7. У меня есть файл csv с двумя столбцами. Столбцы:Словари Python: объединение нескольких списков значений в один список уникальных значений
Coll_id: записи могут быть одиночными или коллекторы могут быть группы
Participant_Coll_id: если Coll_id это один коллектор, то значение будет нулевым. Если Coll_id - это группа, то для каждого Участника в группе будет одна строка.
Образец здесь:
Coll_id,Participant_Coll_id<br>
ARA,ARG
ARA,RAT
ARG,NULL
BRSAR,SGMB
BRSAR,SANTM
BRSAR,CRSR
BRSAR,RAT
CRSR,NULL
DBY,NULL
HZIE,NULL
RAT,NULL
SANTM,NULL
SGMB,NULL
ARG,NULL
DRS,CRSR
DRS,RAT
DRS,ARG
Для каждого коллектора (coll_id), я пытаюсь создать список всех других коллекционеров они собрали с. Я попытался стянуть код, чтобы сделать следующее и это так близко Сейчас:
#This is giving me a dictionary with each COLL_ID having a list of PARTICIPANT_COLL_IDs
with open('colls_mv1.csv', 'r') as f:
reader = csv.DictReader(f, ['COLL_ID', 'PARTICIPANT_COLL_ID'])
data1 = defaultdict(list)
for line in reader:
data1[line['COLL_ID']].append(line['PARTICIPANT_COLL_ID'])
#And this is giving me a dictionary with each PARTICIPANT_COLL_ID having a list of COLL_IDs
with open('colls_mv1.csv', 'r') as f:
reader = csv.DictReader(f, ['COLL_ID', 'PARTICIPANT_COLL_ID'])
data2 = defaultdict(list)
for line in reader:
if line['PARTICIPANT_COLL_ID'] != 'NULL':
data2[line['PARTICIPANT_COLL_ID']].append(line['COLL_ID'])
dict3 = {k: [data1[i] for i in v] for k, v in data2.items()}
print dict3
Я получаю следующий вывод:
{'SGMB': [['SGMB', 'SANTM', 'CRSR', 'RAT']], 'CRSR': [['SGMB', 'SANTM', 'CRSR', 'RAT'], ['CRSR', 'RAT', 'ARG']], 'RAT': [['ARG', 'RAT'], ['SGMB', 'SANTM', 'CRSR', 'RAT'], ['CRSR', 'RAT', 'ARG']], 'PARTICIPANT_COLL_ID': [['PARTICIPANT_COLL_ID']], 'ARG': [['ARG', 'RAT'], ['CRSR', 'RAT', 'ARG']], 'SANTM': [['SGMB', 'SANTM', 'CRSR', 'RAT']]}
То, что я хотел бы это, чтобы объединить списки значений вместе для каждого ключа, чтобы удалить дубликаты и удалить ключ из списка значений:
{'SGMB': ['SANTM', 'CRSR', 'RAT'], 'CRSR': ['SGMB', 'SANTM', 'RAT', 'ARG'], 'RAT': ['ARG', 'SGMB', 'SANTM', 'CRSR'], 'PARTICIPANT_COLL_ID': [['PARTICIPANT_COLL_ID']], 'ARG': ['RAT', 'CRSR'], 'SANTM': ['SGMB', 'CRSR', 'RAT']}
Это так близко - спасибо так много !! Мне просто нужно найти способ удалить дубликаты из каждого списка - и точно определить, что именно я использовал код: – botanist
Дубликаты могут быть удалены с помощью преобразований набора и списка, см. Мое редактирование. – DhruvPathak
Это просто великолепно! Большое вам спасибо за вашу помощь. Он делает именно то, что я хотел этого сделать. – botanist