重命名字典列表中的重复项,方法是在末尾附加累进数字



给定一个类似的字典列表

a_list = [{'name':'jennifer','roll_no':22}, {'name':'kristina','roll_no':26},
{'name':'jennifer','roll_no':18}, {'name':'kristina','roll_no':33}]

如何将其重命名为

a_list = [{'name':'jennifer','roll_no':22}, {'name':'kristina','roll_no':26},
{'name':'jennifer 1','roll_no':18}, {'name':'kristina 1','roll_no':33}]

您想要构建一个新的字典列表,但每当添加一个具有已经存在的'name'值的新字典时,您都希望使用下一个可用选项。

有不同的方法,但其中一种是:

  • 循环a_list中的所有字典,并将它们添加到新列表中
  • 在添加它们之前,请检查一些已使用名称的寄存器,看看它们的名称是否在其中,如果不在,请添加它;如果是,获取并增加与它相关的数字,并更新字典

因此,在代码中:

a_list = [
{'name':'jennifer','roll_no':22}, {'name':'kristina','roll_no':26},
{'name':'jennifer','roll_no':18}, {'name':'kristina','roll_no':33}
]
names = {}
result = []
for d in a_list:
if (name := d['name']) not in names:
names[name] = 0
else:
names[name] += 1
d['name'] = f'{name} {names[name]}'
result.append(d)
print(result)

结果:

[{'name': 'jennifer', 'roll_no': 22}, {'name': 'kristina', 'roll_no': 26}, {'name': 'jennifer 1', 'roll_no': 18}, {'name': 'kristina 1', 'roll_no': 33}]

最新更新