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

2024-09-23 00:24:33 发布

您现在位置: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

indra 0

indra 1

indra 2

indra 3

indra 4

谢谢


Tags: id数字indra办法lianamasitafajar
1条回答
网友
1楼 · 发布于 2024-09-23 00:24:33

我也不知道我是否明白你的意思。此外,如果我按照你的例子,这不是sita和lia的01吗?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'}]

相关问题 更多 >