通过在末尾附加渐进数字来重命名词典列表中的重复项
Rename duplicates in list of dictionaries by appending progressive numbers at end
给出这样的字典列表
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}]
给出这样的字典列表
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}]