我对这个python代码感到头疼。
print "length:", len(pub) # length: 420
pub_dict = dict((p.key, p) for p in pub)
print "dict:", len(pub_dict) # length: 163
如果我理解这一点,我会得到一个字典,其中包含属性p.key
作为键,对象p
作为pub
的每个元素的值。是否有一些副作用我看不到?因为len(pub_dict)
应该与len(pub)
相同而且肯定不在这里,或者我错了?
答案 0 :(得分:4)
由于您可能有几个具有相同密钥的p,因此您可以使用list作为新密钥中的密钥值:
pub_dict = {}
for p in pub:
if not p.key in pub_dict:
pub_dict[p.key] = []
pub_dict[p.key].append(p)
或者,如果您需要唯一标识每条记录,则可以使用任何组合键,例如键+任何其他p值
答案 1 :(得分:-1)
pub_dict = {}
for i,p in enumerate(pub):
pub_dict[p.key] = p
print i+1,len(pub_dict)
会让你了解问题