我有2个列表,我正在合并这样,是否有一种方法可以合并而不会丢失数据,因为我在代码中有重复项?
new = dict(zip(sortedPrimes, a))
既有排序公式又有' a'当我使用len()时,是包含1062个元素的列表。然而,当我打印len(新)时,我将它们压缩在一起时,我得到336.这之前没有发生过,数据在哪里?
其余代码:
def rwh_primes(n):
sieve = [True] * n
for i in range(3,int(n**0.5)+1,2):
if sieve[i]:
sieve[i*i::2*i]=[False]*int((n-i*i-1)/(2*i)+1)
return [2] + [i for i in range(3,n,2) if sieve[i]]
numbers = rwh_primes(10000)
a = [x for x in numbers if x > 1000]
final = []
sortedPrimes = []
for x in a:
sortedPrimes.append(''.join(sorted(str(x))))
lisp = [x for n, x in enumerate(sortedPrimes) if x in sortedPrimes[:n]]
new = dict(zip(sortedPrimes, a))
答案 0 :(得分:3)
print(len(set(sortedPrimes))) # Count of unique keys: 336
字典将值哈希到键。那些关键不重复。在sortedPrimes中有336个独特的项目,因此新的
中有336个键答案 1 :(得分:0)
您遇到一个键映射到多个值的情况。在这种情况下,一个合理的数据结构是列表的字典:
import collections
d = collections.defaultdict(list)
for v1, v2 in zip(sortedPrimes, a):
d[v1].append(v2)
for k in sorted(d):
print k, d[k]
# Output
0013 [3001]
0014 [4001]
0017 [7001]
0019 [1009, 9001]
0023 [2003]
0034 [4003]
0035 [5003]
0047 [4007]
0059 [5009]
0067 [6007]
0079 [9007]
0089 [8009]
0112 [1021, 1201, 2011]
0113 [1013, 1031, 1103, 1301, 3011]
0115 [1051, 5011, 5101]
etc. for all 336 keys ...