比如原数据是这样的:
list = [
{'a': 10, 'b': 15, 'c': 17},
{'a': 10, 'b': 19, 'c': 28},
{'a': 12, 'b': 16, 'c': 15},
{'a': 10, 'b': 42, 'c': 75}
]
我想要得到这样的结果:
list = [
{'a': 10(1), 'b': 15, 'c': 17},
{'a': 10(2), 'b': 19, 'c': 28},
{'a': 12, 'b': 16, 'c': 15},
{'a': 10(3), 'b': 42, 'c': 75}
]
请问这样用python该如何做到呢?十分感谢回答
list1 = [
{'a': 10, 'b': 15, 'c': 17},
{'a': 10, 'b': 19, 'c': 28},
{'a': 12, 'b': 16, 'c': 15},
{'a': 10, 'b': 42, 'c': 75}
]
for i in range(len(list1)):
for key, value in list1[i].items():
count = 1
temp = list1[i][key]
for j in range(i+1, len(list1)):
print(temp, list1[j][key])
if temp == list1[j][key]:
if temp == list1[i][key]:
list1[i][key] = str(value) + str('({})'.format(count))
count += 1
list1[j][key] = str(value) + str('({})'.format(count))
#break
print(list1)
list = [
{'a': 10, 'b': 15, 'c': 17},
{'a': 10, 'b': 19, 'c': 28},
{'a': 12, 'b': 16, 'c': 15},
{'a': 10, 'b': 42, 'c': 75}
]
avs = [l['a'] for l in list]
bvs = [l['b'] for l in list]
cvs = [l['c'] for l in list]
avs_copy = avs.copy()
for a in avs:
if avs.count(a)>1:
num = 1
for i in range(len(avs_copy)):
if avs_copy[i] == a:
avs_copy[i] = str(a)+'('+str(num)+')'
num += 1
#print(avs_copy)
bvs_copy = bvs.copy()
for b in bvs:
if bvs.count(b)>1:
num = 1
for i in range(len(bvs_copy)):
if bvs_copy[i] == b:
bvs_copy[i] = str(b)+'('+str(num)+')'
num += 1
#print(bvs_copy)
cvs_copy = cvs.copy()
for c in cvs:
if cvs.count(c)>1:
num = 1
for i in range(len(cvs_copy)):
if cvs_copy[i] == c:
cvs_copy[i] = str(c)+'('+str(num)+')'
num += 1
#print(cvs_copy)
for l in range(len(list)):
list[l]['a'] = avs_copy[l]
list[l]['b'] = bvs_copy[l]
list[l]['c'] = cvs_copy[l]
print(list)