回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>嗨,我正在尝试在一个列表中列出唯一字符串的最大值。你知道吗</p>
<p>示例:</p>
<pre><code>a = ['DS10.json', 'DS11.json', 'DT4.json', 'DT5.json', 'DT6.json', 'CJ6.json', 'CJ7.json']
</code></pre>
<p>应向我返回以下列表:</p>
<pre><code>['DS11.json', 'DT6.json', 'CJ7.json']
</code></pre>
<p>我尝试了以下代码:</p>
<pre><code>def j(l):
p = []
for i in l:
digcode = i.split('.')[0]
if any(s.startswith(digcode[:2]) for s in p): #there exists prefex in list
if digcode[2:] > p[[n for n, l in enumerate(p) if l.startswith(digcode[:2])][0]][2:]:
p.pop([n for n, l in enumerate(p) if l.startswith(digcode[:2])][0])
p.append(digcode)
else:
pass
else:
p.append(digcode)
return p
</code></pre>
<p>但是当我把它应用到一个更大的样本上时,它并不能做一个精确的工作</p>
<pre><code>>>> o = ['AS6.json', 'AS7.json', 'AS8.json', 'AS9.json', 'BS1.json', 'BS2.json', 'BS3.json', 'BS4.json', 'BS5.json', 'CS1.json', 'CS2.json', 'CS3.json', 'CS4.json', 'CS5.json', 'CS6.json', 'DS10.json', 'DS11.json', 'DS4.json', 'DS5.json', 'DS6.json', 'DS7.json', 'DS8.json', 'DS9.json', 'ES4.json', 'ES5.json', 'ES6.json', 'FS5.json', 'FS6.json', 'FS7.json', 'FS8.json', 'MS4.json', 'MS5.json', 'MS6.json', 'MS7.json', 'MS8.json', 'MS9.json', 'NR1.json', 'NR2.json', 'NR3.json', 'NR4.json', 'NR5.json', 'NR6.json', 'NR7.json', 'NR8.json', 'VR1.json', 'VR2.json', 'VR3.json', 'VR4.json', 'VR5.json', 'VR6.json', 'VR7.json', 'VR8.json', 'XS11.json', 'XS9.json']
>>> j(o)
['AS9', 'BS5', 'CS6', 'DS9', 'ES6', 'FS8', 'MS9', 'NR8', 'VR8', 'XS9']
</code></pre>
<p>这是不正确的,因为有一个XS11和DS11的例子。你知道吗</p>
<p>如果有人能帮我纠正我的问题,或者能为我的问题找到一个更简单的解决办法,我将不胜感激。谢谢</p>