小编bar*_*cel的帖子

为什么将键按顺序插入到python dict中比为无序编写更快

我一直在创建巨大的dicts(数百万条目),我注意到如果我用密钥创建它们以便它更快.

我想它与哈希函数的冲突有关,但有人可以解释它为什么会发生,如果它在python的版本之间是一致的吗?

在这里你有一个人为的例子:

import timeit
import random

def get_test_data(num, size):
    olist, ulist = [], []
    for _ in range(num):
        otest = [str(i) for i in range(size)]
        utest = list(otest)
        random.shuffle(utest)
        olist.append(otest)
        ulist.append(utest)
    return olist, ulist

NUM_TESTS = 20
# Precalculate the test data so we only measure dict creation time
ordered, unordered = get_test_data(NUM_TESTS, 1000000)

def test_ordered():
    dict((k, k) for k in ordered.pop())

def test_unordered():
    dict((k, k) for k in unordered.pop())

print "unordered: ",
print timeit.timeit("test_unordered()",
                    setup="from __main__ import test_unordered, …
Run Code Online (Sandbox Code Playgroud)

python performance dictionary

5
推荐指数
1
解决办法
236
查看次数

用C解码printf语句(Printf Primer)

我正在努力将一些旧代码从1998年带到21世纪.该过程的第一步是将printf语句转换为QString变量.不管我多少次回头看看printf,我总是忘记了一件事.所以,为了好玩,让我们一起解码它,为了时间的缘故,并在此过程中为Stackoverflow 创建第一个小'printf primer'.

在代码中,我遇到了这个小宝石,

printf("%4u\t%016.1f\t%04X\t%02X\t%1c\t%1c\t%4s", a, b, c, d, e, f, g);
Run Code Online (Sandbox Code Playgroud)

如何格式化变量a,b,c,d,e,f,g?

c printf qstring qt

4
推荐指数
2
解决办法
3282
查看次数

namedtuple和冻结字典之间的区别

我知道没有冻结的dict数据类型但是如果有一个与namedtuple有什么不同.在我看来,namedtuple执行所需的操作,但显然它没有.那有什么区别?

python dictionary namedtuple

4
推荐指数
1
解决办法
1171
查看次数

A/B测试分区功能

我想将我的用户分成几组来运行A/B测试.

通常的方法是将每个用户随机分配给变量并存储该关系直到A/B测试结束.但这会迫使我在某处存储该关联,我想避免它.

由于用户已在我的应用程序中注册,我希望有一个功能可以在我的测试中统一分发用户,这样我就可以在A/B测试中获得非偏斜的结果.

我应该使用哪种哈希函数?

statistics hash-function ab-testing abtest

3
推荐指数
1
解决办法
1458
查看次数