擅长:python、mysql、java
<p>以下是我的解决方案(注释代码):</p>
<pre><code>import itertools
l = [
['apple', 'window', 'pear', 2, 1.55, 'banana'],
['apple', 'orange', 'kiwi', 3, 1.80, 'banana'],
['apple', 'envelope', 'star_fruit', 2, 1.55, 'banana'],
['apple', 'orange', 'pear', 2, 0.80, 'coffee_cup'],
['apple', 'orange', 'pear', 2, 3.80, 'coffee_cup']
]
#Here you can select the important fields
key = lambda i: (i[0],i[2])
l.sort(key=key)
grp = itertools.groupby(l, key=key)
#Look at itertools documentation
grouped = (list(j) for i,j in grp)
for i in grouped:
if len(i) == 1:
i[0].append(0)
else: #You want duplicates to start from 1
for pos, item in enumerate(i, 1):
item.append(pos)
#Just a little loop for flattening the list
result = []
for i in grouped:
for j in i:
result.append(j)
print(result)
</code></pre>
<p>输出:</p>
^{pr2}$