小编Ksh*_*ogi的帖子

泡椒还是json?

我需要将一个小dict对象保存到磁盘,其对象的类型str和值是ints ,然后恢复它.像这样的东西:

{'juanjo': 2, 'pedro':99, 'other': 333}
Run Code Online (Sandbox Code Playgroud)

什么是最好的选择,为什么?用pickle或用simplejson?序列化?

我使用的是Python 2.6.

python json pickle

107
推荐指数
7
解决办法
7万
查看次数

检查环境变量是否存在的良好做法是什么?

我想"FOO"在Python 环境中检查我的环境是否存在变量.为此,我使用的是os标准库.在阅读了图书馆的文档后,我找到了两种方法来实现我的目标:

方法1:

if "FOO" in os.environ:
    pass
Run Code Online (Sandbox Code Playgroud)

方法2:

if os.getenv("FOO") is not None:
    pass
Run Code Online (Sandbox Code Playgroud)

我想知道哪种方法(如果有的话)是好的/首选条件以及为什么.

python if-statement environment-variables python-2.7 python-3.x

96
推荐指数
5
解决办法
8万
查看次数

如何在Python中重命名virtualenv?

我用以下方法拼错了virtualenv它的名字:

$ virtualenv vnev
Run Code Online (Sandbox Code Playgroud)

我实际上打算用名称创建环境venv.尝试将vnev文件夹重命名为venv,我发现这并没有提供太多帮助.激活环境的名称仍然重命名旧的vnev.

$ mv vnev venv
$ . venv/bin/activate
(vnev) $ deactivate
Run Code Online (Sandbox Code Playgroud)

我想知道如何重命名环境?

python directory virtualenv

53
推荐指数
3
解决办法
3万
查看次数

如何使一个对象适当地清洗?

这是我的代码:

class Hero:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return self.name + str(self.age)

    def __hash__(self):
        print(hash(str(self)))
        return hash(str(self))

heroes = set()

heroes.add(Hero('Zina Portnova', 16)) # gets hash -8926039986155829407
print(len(heroes)) # gets 1

heroes.add(Hero('Lara Miheenko', 17)) # gets hash -2822451113328084695
print(len(heroes)) # gets 2

heroes.add(Hero('Zina Portnova', 16)) # gets hash -8926039986155829407
print(len(heroes)) # gets 3! WHY?
Run Code Online (Sandbox Code Playgroud)

为什么会这样?
第一个和第三个对象具有相同的内容和相同的散列但是len()讲述了3个唯一对象?

python python-3.x

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

C++:什么是流

我听说过流,更具体地说是文件流.

那他们是什么?

它是在记忆中有位置的东西吗?

它是包含数据的东西吗?

它只是文件和对象之间的连接吗?

任何帮助,将不胜感激

c++ fstream stream filestream

46
推荐指数
3
解决办法
3万
查看次数

hash()和id()之间的区别

我有两个用户定义的对象,比如说ab.
这两个对象都具有相同的hash值.
然而,id(a)并且id(b)是不平等的.

此外,

>>> a is b
False
>>> a == b
True
Run Code Online (Sandbox Code Playgroud)

从这个观察中,我可以推断出以下情况吗?

  • 不相等的对象可能具有相同的hash值.
  • 等于对象需要具有相同的id值.
  • 无论何时obj1 is obj2调用,id都会比较两个对象的值,而不是它们的hash值.

python hash equality

18
推荐指数
2
解决办法
5060
查看次数

处于相同"if"条件的两个"=="相等运算符未按预期工作

我试图建立三个相等变量的相等,但下面的代码不打印应该打印的明显正确的答案.有人可以解释,编译器如何解析if(condition)内部给定的?

#include<stdio.h>
int main()
{
        int i = 123, j = 123, k = 123;
        if ( i == j == k)
                printf("Equal\n");
        else
                printf("NOT Equal\n");
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

manav@workstation:~$ gcc -Wall -pedantic calc.c
calc.c: In function ‘main’:
calc.c:5: warning: suggest parentheses around comparison in operand of ‘==’
manav@workstation:~$ ./a.out
NOT Equal
manav@workstation:~$
Run Code Online (Sandbox Code Playgroud)

编辑:

通过下面给出的答案,以下声明可以检查上面的相等吗?

if ( (i==j) == (j==k))
Run Code Online (Sandbox Code Playgroud)

c c++ compiler-construction operators equals-operator

11
推荐指数
4
解决办法
3513
查看次数

mac os zsh:找不到命令:pip

我正在学习python,有些文章告诉我应该使用pip,但是当我尝试安装pip成功时,它会告诉我

zsh: command not found: pip
Run Code Online (Sandbox Code Playgroud)

这是我的python

?  ~ git:(master) ? which -a python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

python版本

?  ~ git:(master) ? python --version
Python 3.5.0
Run Code Online (Sandbox Code Playgroud)

用户配置

.zshrc

export PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/hedongfang/.rvm/gems/ruby-2.0.0-p643/bin:/Users/hedongfang/.rvm/gems/ruby-2.0.0-p643@global/bin:/Users/hedongfang/.rvm/rubies/ruby-2.0.0-p643/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/hedongfang/.rvm/bin:/System/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages"
export MANPATH="/usr/local/man:$MANPATH"
Run Code Online (Sandbox Code Playgroud)

我是python的新手,所以如果你还需要其他东西,请告诉我.

python pip

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

在字典中交换键值对

我正在寻找交换给定字典的所有键值对的方法.

到目前为止,我可以想到一种方法:

例如:

>>>a = { 0: 'a', 1 : 'b', 2 : 'c' }
>>> {value : key for key,value in a.items()}
{'a': 0, 'b': 1, 'c' : 2}
Run Code Online (Sandbox Code Playgroud)

但为此,我将不得不使用额外的空间来声明另一个字典.
我想知道可以使用的方法来交换键值对更多的空间效率.

python swap dictionary space-complexity python-3.x

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

Python:检查 JSON 文件并在需要时创建一个

我目前正在制作一个需要 JSON 数据库文件的程序。我希望程序检查文件,如果它在那里,那么它就完美了,运行程序的其余部分,但如果它不存在{},则在文件内部创建“Accounts.json” ,而不是运行程序。

我该怎么做?什么是最有效的方法。

注意:我用它来检查,但我将如何创建文件:

def startupCheck():
    if os.path.isfile(PATH) and os.access(PATH, os.R_OK):
        # checks if file exists
        print ("File exists and is readable")
    else:
        print ("Either file is missing or is not readable")
Run Code Online (Sandbox Code Playgroud)

python

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