您能否建议是否有任何方法可以通过添加前缀或后缀来保留所有可重复(重复)的键。在下面的示例中,地址键重复 3 次。它可能会有所不同(1 到 3 次)。我想获得预期输出中的输出,并添加后缀以使密钥唯一。目前更新功能正在覆盖键值。
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)
当前输出:{'name':'John','age':'25','Address':'Washington','email':'[email protected]'}
预期输出:{'name':'John','age':'25','Address1':'芝加哥','Address2':'Phoenix','Address3':'华盛顿','email':'John @email.com'}
尝试了以下方法:
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)
预期输出:{'name':'John','age':'25','Address1':'芝加哥','Address2':'Phoenix','Address3':'华盛顿','email':'John @email.com'}
不要用作
list
变量名。list
是Python内置类的名称,它在以下解决方案中使用。我重命名了你的列表变量l
。该解决方案包括首先构建一个多字典(使用 collections.defaultdict(list))来存储多个值:
现在
d
包含:{'姓名':['约翰'],'年龄':['25'],'地址':['芝加哥','菲尼克斯','华盛顿'],'电子邮件':['[email protected] ']}
然后迭代 的值
d
,如果超过一个,则附加后缀:输出:
{'姓名':'约翰','年龄':'25','地址1':'芝加哥','地址2':'菲尼克斯','地址3':'华盛顿','电子邮件':'约翰@电子邮件。 com'}
另一个解决方案(仅迭代列表一次):
印刷:
你可以使用这样的东西:
输出:
附言。不要使用 python 关键字
list
来命名变量,因为它会覆盖类型list
您可以首先将两个列表中的值与键分开,然后通过添加后缀使键列表唯一,并将唯一键与值组合到最后的字典中:
请注意,这不包括后缀键与原始键冲突的情况。例如: ["Address1:...","Address:...","Address:..."] 将通过向“Address”键添加后缀来生成重复的“Address1”。如果您的数据中可能存在这种情况,则需要采用不同的方法
或者,您可以使用字典对与每个键关联的列表中的值进行分组,然后扩展此组字典以生成不同的键:
尽管
grp
它本身实际上可能在后续代码中更容易操作: