在列表对象python中按组自动递增

时间:2018-08-15 07:55:19

标签: python

[{'id': '1', 'nama': 'fajar'},  {'id': '2', 'nama': 'fajar'},  
 {'id': '3', 'nama': 'fajar'},  {'id': '4', 'nama': 'fajar'},  
 {'id': '5', 'nama': 'sita'},  {'id': '6', 'nama': 'lia'},  
 {'id': '7', 'nama': 'indra'},  {'id': '8', 'nama': 'indra'},  
 {'id': '9', 'nama': 'indra'},  {'id': '10', 'nama': 'indra'}]

是否可以通过组名自动增加列名中的数字?我的预期结果是这样的:

  

fajar 0

     

fajar 1

     

fajar 2

     

fajar 3

     

sita 1

     

lia 1

     

英德拉0

     

indra 1

     

indra 2

     

indra 3

     

indra 4

谢谢

1 个答案:

答案 0 :(得分:0)

我也不确定我是否明白你的意思。此外,如果我按照您的示例进行操作,是不是应该使用0而不是1的sita和lia? indra和fajar也以0开头。

反正。这可能会有所帮助:

d = [{'id': '1', 'nama': 'fajar'}, {'id': '2', 'nama': 'fajar'}, {'id': '3', 'nama': 'fajar'}, {'id': '4', 'nama': 'fajar'}, {'id': '5', 'nama': 'sita'}, {'id': '6', 'nama': 'lia'}, {'id': '7', 'nama': 'indra'}, {'id': '8', 'nama': 'indra'}, {'id': '9', 'nama': 'indra'}, {'id': '10', 'nama': 'indra'}]
c = {}
for i in d:
    if not i["nama"] in c:
        c[i["nama"]] = 0
    c[i["nama"]] += 1
    i["nama"] += str(c[i["nama"]] - 1)

给予

[{'id': '1', 'nama': 'fajar0'},
 {'id': '2', 'nama': 'fajar1'},
 {'id': '3', 'nama': 'fajar2'},
 {'id': '4', 'nama': 'fajar3'},
 {'id': '5', 'nama': 'sita0'},
 {'id': '6', 'nama': 'lia0'},
 {'id': '7', 'nama': 'indra0'},
 {'id': '8', 'nama': 'indra1'},
 {'id': '9', 'nama': 'indra2'},
 {'id': '10', 'nama': 'indra3'}]