我经常使用sorted和groupby查找迭代中的重复项.现在我觉得它不可靠:
from itertools import groupby
data = 3 * ('x ', (1,), u'x')
duplicates = [k for k, g in groupby(sorted(data)) if len(list(g)) > 1]
print duplicates
# [] printed - no duplicates found - like 9 unique values
Run Code Online (Sandbox Code Playgroud)
为什么代码在Python 2.x的上述故障的原因进行了说明这里.
什么是可靠的pythonic方法来查找重复项?
我在SO上寻找类似的问题/答案.其中最好的是" 在Python中,我如何获取列表并将其缩减为重复列表? ",但是接受的解决方案不是pythonic(它是程序多行的......如果...添加... else ... add ... return result)和其他解决方案不可靠(取决于"<"运算符的未实现的传递性)或缓慢(O n*n).
[编辑]关闭.接受的答案帮助我在下面的答案中总结了更为一般的结论.
我喜欢使用内置类型来表示例如树结构.这就是为什么我现在害怕混合.
当列表中的项目不是同一类型时,max函数如何工作?
例如,以下代码返回[1,'3']
max([1,52,53],[1,'3']) => [1,'3']
Run Code Online (Sandbox Code Playgroud)