List = ["Wednesday_A_20", "Tuesday_C_22", "Thursday-A-30"]
我可以将其排序为
List.sort(key=lambda x: x.split("_", 1)[-1])
但是可以使用
组() 并获得所需的输出
"Wednesday_A_20", "Tuesday_C_22"
不应该是第1部分中的任何重复字母。 python新手更好的方法???提前致谢
答案 0 :(得分:3)
如果我理解你,你可以做到
In [1]: mylist = ["Wednesday_A_20", "Tuesday_C_22", "Thursday_A_30"]
In [2]: key = lambda s: s.split('_')[1]
In [3]: from itertools import groupby
In [4]: [next(g) for k, g in groupby(sorted(mylist, key=key), key=key)]
Out[4]: ['Wednesday_A_20', 'Tuesday_C_22']
此处的
你可以使用dict。答案 1 :(得分:0)
如果你只需要在最后排序一次的东西,你可能最好使用字典,其中键是A,C等,其中值是Wednesday_A_20等。然后在最后,得到dict.keys()并对它们进行排序。
如果你需要按照键的每一步按键排序的东西,你仍然使用与上面相同的键和值,但是使用treap(http://stromberg.dnsalias.org/~strombrg/treap/)或红黑树({{{{{{{ {3}})。两个(可以)像字典一样工作,除了它们的键总是保持有序,它们比字典慢一点(但不比在循环中排序字典键慢!)。 Treaps平均速度更快(适用于批处理应用程序),但红黑树的标准偏差较低(适用于交互式应用程序)。