jle*_*and 3 python list duplicates
我有一个整数列表.
我想做的是对它们进行排序并删除所有重复项.我在网上看到了两种不同的解决方案.两者似乎都给出了与我期望的结果不同的结果.
a = integer_combinations(5, 5)
print a
>>[4, 8, 16, 32, 9, 27, 81, 243, 16, 64, 256, 1024, 25, 125, 625, 3125]
b = sorted(a)
print b
>>[4, 8, 9, 16, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125]
c = dict().fromkeys(sorted(a)).keys()
print c
>> [32, 64, 4, 1024, 625, 8, 9, 256, 16, 81, 243, 3125, 25, 27, 125]
Run Code Online (Sandbox Code Playgroud)
另一种方法,使用集合:
d = list(set(b))
print d
>> [32, 64, 4, 1024, 625, 8, 9, 256, 16, 81, 243, 3125, 25, 27, 125]
What I expect is :
>>[4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125]
Run Code Online (Sandbox Code Playgroud)
有人会知道这种行为的原因吗?
谢谢!
这是我会用的:
>>> a = [4, 8, 16, 32, 9, 27, 81, 243, 16, 64, 256, 1024, 25, 125, 625, 3125]
>>> sorted(set(a))
[4, 8, 9, 16, 25, 27, 32, 64, 81, 125, 243, 256, 625, 1024, 3125]
Run Code Online (Sandbox Code Playgroud)
您的代码无法按预期工作的原因是,dict它不保证其密钥的任何特定顺序.同样,set也不保证其元素的排序.
因此,分拣步骤必须在最后.