Решением было просто создать 3-вложенный цикл for и выполнить девять операторов создания словаря. Это привело к появлению 216 записей для каждой строки, что означало, что я мог устранить дубликаты с помощью простого сценария, который я скопировал из stackoverflow ( Удаление дублирующихся строк из файла CSV с помощью сценария Python )
Были еще увольнения. Например, когда к имени name2 не добавлялось пустое имя first2, добавлялся пробел, и мой искатель дубликатов распознавал firstname и firstname + '' как отдельные значения и сохранял дубликаты. Я не против, однако, это не имеет значения для моих целей. Я просто не хотел, чтобы избыточность составляла 216 значений для каждого.
final = [{}]
for agent in agents:
#create a list of dictionaries for this agent
finalagents = [{}]
for i in range(1,4):
for j in range(1,3):
for k in range(1,2):
city = 'city' + str(i)
state = 'state' + str(i)
zipcode = 'zip' + str(i)
phone = 'phone' + str(j)
email = 'email' + str(k)
fnfn1 = agent['fn'] + ' ' + agent['fn1']
lnln1 = agent['ln'] + ' ' + agent['ln1']
#fn ln
finalagents.append({'fn': agent['fn'], 'ln': agent['ln'], 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#fn lnln1
finalagents.append({'fn': agent['fn'], 'ln': lnln1, 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#fn ln1
finalagents.append({'fn': agent['fn'], 'ln': agent['ln1'], 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#fnfn1 ln
finalagents.append({'fn': fnfn1, 'ln': agent['ln'], 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#fnfn1 lnln1
finalagents.append({'fn': fnfn1, 'ln': lnln1, 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#fnfn1 ln1
finalagents.append({'fn': fnfn1, 'ln': agent['ln1'], 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#fn1 ln
finalagents.append({'fn': agent['fn1'], 'ln': agent['ln'], 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#fn1 lnln1
finalagents.append({'fn': agent['fn1'], 'ln': lnln1, 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#fn1 ln1
finalagents.append({'fn': agent['fn1'], 'ln': agent['ln1'], 'city': agent[city], 'state': agent[state],
'zip': agent[zipcode], 'phone': agent[phone], 'email': agent[email]})
#add the finalagents list of dictionaries to the official final list of dictionaries in an iterable for loop
for dictionary in finalagents:
final.append(dictionary)