Você poderia sugerir alguma maneira de manter todas as chaves repetíveis (duplicadas) adicionando prefixo ou sufixo. No exemplo abaixo, a chave de endereço é duplicada 3 vezes. Pode variar (1 a 3 vezes). Eu quero obter a saída como na saída esperada com a adição de um sufixo para tornar a chave exclusiva. Atualmente, a função de atualização está substituindo o valor da chave.
list = ['name:John','age:25','Address:Chicago','Address:Phoenix','Address:Washington','email:[email protected]']
dic = {}
for i in list:
j=i.split(':')
dic.update({j[0]:j[1]})
print(dic)
Saída atual: {'nome': 'João', 'idade': '25', 'Endereço': 'Washington', 'email': 'Joã[email protected]'}
Saída esperada: {'name': 'John', 'age': '25', 'Address1': 'Chicago', 'Address2': 'Phoenix', 'Address3': 'Washington', 'email': 'John @email.com'}
Tentei o abaixo:
list = ['name:John','age:25','Address:Chicago','Address:Phoenix','Address:Washington','email:[email protected]']
dic = {}
for i in list:
j=i.split(':')
dic.update({j[0]:j[1]})
print(dic)
Saída esperada: {'name': 'John', 'age': '25', 'Address1': 'Chicago', 'Address2': 'Phoenix', 'Address3': 'Washington', 'email': 'John @email.com'}
Não use
list
como um nome de variável.list
é o nome de uma classe interna do Python e é usado na solução a seguir. Eu renomeei sua variável de listal
.Esta solução consiste em primeiro construir um multidict (usando collections.defaultdict(list)) para armazenar os múltiplos valores:
agora
d
contém:{'nome': ['John'], 'idade': ['25'], 'Endereço': ['Chicago', 'Phoenix', 'Washington'], 'email': ['[email protected] ']}
em seguida, repita os valores de
d
e, se houver mais de um, acrescente um sufixo:saída:
{'name': 'John', 'age': '25', 'Address1': 'Chicago', 'Address2': 'Phoenix', 'Address3': 'Washington', 'email': 'John@email. com'}
Outra solução (isso itera sobre a lista apenas uma vez):
Estampas:
Você pode usar algo assim:
Saída:
PS. não use a palavra-chave python
list
para nomear suas variáveis, pois ela substitui o tipolist
Você pode primeiro separar os valores das chaves em duas listas e, em seguida, tornar a lista de chaves exclusiva adicionando sufixos e combinar as chaves exclusivas com os valores em um dicionário no final:
Observe que isso não cobre os casos em que as chaves com sufixo colidem com as chaves originais. Por exemplo: ["Endereço1:...","Endereço:...","Endereço:..."] produziria um "Endereço1" duplicado adicionando um sufixo à chave "Endereço". Se essa situação pudesse existir em seus dados, seria necessária uma abordagem diferente
Como alternativa, você pode usar um dicionário para agrupar valores em listas associadas a cada chave e expandir esse dicionário de grupo para produzir chaves distintas:
Embora
grp
ele próprio possa ser mais fácil de manipular no código subseqüente: