小编jve*_*dge的帖子

为什么在使用json.dumps时,python dict的int键变为字符串?

根据这个转换表,当使用JSON模块进行序列化时,Python int会被编写为JSON数字 - 正如我所期望的那样.

我有一个带整数键和整数值的字典:

>>> d = {1:2}
>>> type(d.items()[0][0])
<type 'int'>
>>> type(d.items()[0][1])
<type 'int'>
Run Code Online (Sandbox Code Playgroud)

当我使用json模块将其序列化为JSON字符串时,该值被写为数字,但键被写为字符串:

>>> json.dumps(d)
'{"1": 2}'
Run Code Online (Sandbox Code Playgroud)

这不是我想要的行为,它似乎特别破碎,因为它打破了json.dumps/json.loads round-tripping:

>>> d == json.loads(json.dumps(d))
False
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,有没有办法可以强制将密钥写成数字?

python serialization json

31
推荐指数
1
解决办法
2万
查看次数

为什么没有删除JUnit TemporaryFolder?

JUnit的TemporaryFolder规则的文档声明它创建了文件和文件夹

"保证在测试方法完成时删除(无论是通过还是失败)"

但是,断言TemporaryFolder不存在会失败:

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

public class MyTest {

    @Rule
    public TemporaryFolder _tempFolder = new TemporaryFolder();

    @After
    public void after() {
        assertFalse(_tempFolder.getRoot().exists());  //this assertion fails!
    }

    @Test
    public void pass() throws IOException {
        assertTrue(true);
    }
Run Code Online (Sandbox Code Playgroud)

我也看到文件确实存在于文件系统中.

为什么这不会被删除?

java junit

15
推荐指数
1
解决办法
6550
查看次数

Python os.path.relpath行为

我有一个目录bar的目录里面foo,使用文件foo_file.txt目录foo和文件bar_file.txt目录bar; 即

computer$ ls
foo/
computer$ ls foo/
bar/  foo_file.txt
computer$ ls foo/bar/
bar_file.txt
Run Code Online (Sandbox Code Playgroud)

使用python os.path.relpath函数,我期望:

os.path.relpath('foo/bar/bar_file.txt', 'foo/foo_file.txt')
Run Code Online (Sandbox Code Playgroud)

给我:

'bar/bar_file.txt'
Run Code Online (Sandbox Code Playgroud)

但是,它实际上给了我:

'../bar/bar_file.txt'
Run Code Online (Sandbox Code Playgroud)

为什么是这样?有没有一种简单的方法来获得我想要的行为?

编辑:这是在Linux上使用Python 2.7.3

python path os.path

9
推荐指数
2
解决办法
2万
查看次数

从Numpy ndarray中提取给定行和列的最快方法是什么?

我有一个大的(约14,000 x 14,000)方阵,表示为Numpy ndarray.我希望提取大量的行和列 - 我事先知道的索引,尽管它实际上是所有行和列都不是全零 - 以获得一个新的方阵(大约10,000 x 10,000).

我发现这样做的最快方法是:

> timeit A[np.ix_(indices, indices)]
1 loops, best of 3: 6.19 s per loop
Run Code Online (Sandbox Code Playgroud)

但是,这比进行矩阵乘法所需的时间要慢得多:

> timeit np.multiply(A, A)
1 loops, best of 3: 982 ms per loop
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,因为行/列提取和矩阵乘法都需要分配一个新数组(矩阵乘法的结果比提取的结果更大),但矩阵乘法也需要执行额外的计算.

因此,问题是:是否有更有效的方法来执行提取,特别是至少与矩阵乘法一样快?

python optimization performance numpy scipy

6
推荐指数
1
解决办法
772
查看次数

有没有相当于R的qchisq函数的python?

R qchisq函数将p值和自由度数转换为相应的卡方值.是否有一个具有等效的Python库?

我没有找到任何东西就在SciPy中四处看看.

python statistics r scipy chi-squared

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

如何通过覆盖输出目录中的现有文件来阻止"jekyll build"?

我的Jekyll支持的网站的源代码存在于一个git仓库中,但该网站还需要有一些太大的静态文件,这些文件太大而无法进行版本控制.因此,它们不是Jekyll构建管道的一部分.

我希望这些只是简单地生活在assetsJekyll目的地的一个目录中(这是一个服务器目录;请注意我在这里没有对服务器的任何控制;我所能做的就是将静态文件转储到指定的目录中) git repo中不存在.但是,运行jekyll build会删除输出目录中的所有内容.

在这种情况下,有没有办法改变杰基尔的行为?还是有其他一些好方法来处理这个问题?

jekyll

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