yebean 发表于 2021-1-8 23:09

100000条数据,为什么加入字典,达不到100000条

import random
lk = list()
for x in range(0, 1000000):
    k = random.randint(100000, 100000000)
    lk.append(k)
   
k = random.sample(lk, 100000)
print(len(k))
dInfo = {}
i = 0
for x in range(0, 100000):
    v = []
    name = "Jeapedu" + str(k)
    year = random.randint(1990, 2000)
    if x % 5 == 0:
      race = 'Meng'
    else:
      race = 'Han'
   
    if x % 3 == 0:
      sex = 'F'
    else:
      sex = "M"
   
    v =
    dInfo.setdefault(k, v)

print(len(dInfo))
dk = list(dInfo.keys())





100000条数据,为什么加入字典,达不到100000条

fortytwo 发表于 2021-1-8 23:15

因为字典是去重的,如果有重复就会过滤掉,不会加入。key值不能相同

yebean 发表于 2021-1-8 23:28

k = random.sample(lk, 100000)应该不会有重复的呀?

古月不傲 发表于 2021-1-8 23:35

本帖最后由 古月不傲 于 2021-1-8 23:45 编辑

字典中的key不能重复,相当于C++中的std::map
k = random.randint(100000, 100000000) 这条语句产生不同的随机数,可能会出现相同的数
dInfo.setdefault(k, v) 执行很明显了
当你熟悉一门语言其他语言就容易理解多了,我也只今天2倍速度视频快速跳看了下python

列明 发表于 2021-1-9 00:16

import random
lk = list()
for x in range(0, 1000000):
    這裏要加do...loop語句
    (也不知道python裏面有沒有do...loop語句)
    直到隨機生成的k(k = random.randint(100000, 100000000))不在lk裏面,
    lk.append(k)

Steven2017 发表于 2021-1-9 00:25

少的数据被去重了

一抹啊 发表于 2021-1-9 02:00

因为达不到100000条

EnterpriseSolu 发表于 2021-1-9 08:20

想要重复的列表,可以用list或是queue

Cool_Breeze 发表于 2021-1-9 09:50

如果两个数值相等 (例如 1 和 1.0) 则两者可以被用来索引同一字典条目

fortytwo 发表于 2021-1-9 10:15

yebean 发表于 2021-1-8 23:28
k = random.sample(lk, 100000)应该不会有重复的呀?

只要随机,就肯定有几率重复,你每次运行得到的字典长度都不一样也能有力的去证明这一点。
页: [1]
查看完整版本: 100000条数据,为什么加入字典,达不到100000条