给定一个类似的字典列表
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}]