擅长:python、mysql、java
<p>我想这会满足你的要求:</p>
<pre><code>ports=["1/1/1","1/1/3","2/1/5", "1/1/2", "2/1/6" ]
def minimize_list(ports):
ports = [x.split("/") for x in ports]
temp_new_ports = {}
for n in ports:
if not n[0] in temp_new_ports.keys():
temp_new_ports[n[0]] = {}
if not n[1] in temp_new_ports[n[0]].keys():
temp_new_ports[n[0]][n[1]] = []
temp_new_ports[n[0]][n[1]].append(n[2])
temp_new_ports[n[0]][n[1]].sort()
new_ports = []
for key,value in temp_new_ports.items():
for key2, value2 in value.items():
this_entry = f"{key}/{key2}/"
_min, _max = value2[0], value2[-1]
if _min == _max:
this_entry += str(_min)
elif int(_max) - int(_min) + 1 == len(value2):
this_entry += f"{_min}-{_max}"
else:
this_entry += ','.join(value2)
new_ports.append(this_entry)
return new_ports
print(minimize_list(ports))
</code></pre>
<p>输出:</p>
<pre><code>['1/1/1-3', '2/1/5-6']
</code></pre>