为什么我得到两种方式之间的长度差异:dict和array

时间:2015-07-24 10:42:14

标签: python python-2.7

哈希是一个生成器。

  mapper = {}
  for hash, offset in hashes:
      mapper[hash.upper()] = offset
  len(mapper)

映射器长度:1444

hashlist = []
for hash in hashes:
    hashlist.append(hash)
len(hashlist)

哈希表的长度:1477

这是我不明白的事情!

2 个答案:

答案 0 :(得分:5)

显然,大写时你有重复的哈希值。字典中的键是唯一的,并且使用相同的(大写的)哈希作为字典中的键将替换该键的先前值。

在你的情况下,你有33个哈希,当大写时,已经出现过。

答案 1 :(得分:2)

列表中可能存在重复元素,因为字典不包含重复键。有一种方法可以确定,您可以将列表转换为集合,然后检查其长度。

hashlist = []
for hash in hashes:
    hashlist.append(hash)
len(hashlist) # This gives the length of list which can contain duplicate values.

len(set(hashlist)) # This gives the length of list with unique values in it.

如果您需要从列表中找到重复元素

a = [1,2,3,2,1,5,6,5,5,5]

import collections
print [item for item, count in collections.Counter(a).items() if count > 1]

## [1, 2, 5]