我需要将一个小dict对象保存到磁盘,其对象的类型str和值是ints ,然后恢复它.像这样的东西:
{'juanjo': 2, 'pedro':99, 'other': 333}
Run Code Online (Sandbox Code Playgroud)
什么是最好的选择,为什么?用pickle或用simplejson?序列化?
我使用的是Python 2.6.
我想"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
我用以下方法拼错了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)
我想知道如何重命名环境?
这是我的代码:
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个唯一对象?
我听说过流,更具体地说是文件流.
那他们是什么?
它是在记忆中有位置的东西吗?
它是包含数据的东西吗?
它只是文件和对象之间的连接吗?
任何帮助,将不胜感激
我有两个用户定义的对象,比如说a和b.
这两个对象都具有相同的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值.我试图建立三个相等变量的相等,但下面的代码不打印应该打印的明显正确的答案.有人可以解释,编译器如何解析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) 我正在学习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的新手,所以如果你还需要其他东西,请告诉我.
我正在寻找交换给定字典的所有键值对的方法.
到目前为止,我可以想到一种方法:
例如:
>>>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)
但为此,我将不得不使用额外的空间来声明另一个字典.
我想知道可以使用的方法来交换键值对更多的空间效率.
我目前正在制作一个需要 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 ×8
python-3.x ×3
c++ ×2
c ×1
dictionary ×1
directory ×1
equality ×1
filestream ×1
fstream ×1
hash ×1
if-statement ×1
json ×1
operators ×1
pickle ×1
pip ×1
python-2.7 ×1
stream ×1
swap ×1
virtualenv ×1