Python新手,对字典有疑问。 我有一个字典,我以一个特定的顺序宣布,并希望始终保持这个顺序。 键/值不能真正保持它们的价值的顺序,我只是想它的顺序,我宣布它。 所以如果我有字典: d = {'ac':33, 'gw':20, 'ap':102, 'za':321, 'bs':10} 如果我查看它或遍历遍历它不是这样的顺序,有没有办法确保Python将保持我声明的键/值的显式顺序? 使用Python 2.6
下面的代码在Python 2.5和3.0中都能像预期的那样工作: a, b, c = (1, 2, 3) print(a, b, c) def test(): print(a) print(b) print(c) # (A) #c+=1 # (B) test() 但是,当我取消注释行(B)时 ,我得到一个UnboundLocalError: 'c' not assigned在行(A) 。 a和b的值被正确打印。 这让我完全困惑,原因有两个: 为什么在行(A)上有一个运行时错误,因为(B)行后面的语句? 为什么variablesa和b按预期打印,而c会产生错误? 唯一可以解释的是, 局部variablesc由c+=1赋值,即使在创build局部variables之前,它也比“全局”variablesc更为先进。 当然,在variables存在之前,variables“偷窃”范围是没有意义的。 有人可以解释这种行为吗?
我的Google-fu让我失望了 在Python中,以下两个testing是否相等(ha!)? n = 5 # Test one. if n == 5: print 'Yay!' # Test two. if n is 5: print 'Yay!' 这是否适用于你将比较实例的对象( list说)? 好吧,这样回答我的问题: L = [] L.append(1) if L == [1]: print 'Yay!' # Holds true, but… if L is [1]: print 'Yay!' # Doesn't. 所以==testing值在哪里testing,看看他们是否是同一个对象?
有理由更喜欢使用map()不是列表理解,反之亦然? 他们中的任何一个通常比另一个更有效率或被认为通常更为pythonic?
当问这个问题时 ,我意识到我对原始string的了解不多。 对于自称是Django教练的人来说,这很糟糕。 我知道什么是编码,而且我知道自己得到什么是Unicode。 但是, r做了什么? 它会导致什么样的string? 而最重要的是,你到底做了什么? 最后,是否有任何可靠的方法从Unicodestring返回到一个简单的原始string? 嗯,顺便说一下,如果你的系统和你的文本编辑器字符集设置为UTF-8, u真的做了什么?
如何在Python中生成一个列表的所有排列,与列表中元素的types无关? 例如: permutations([]) [] permutations([1]) [1] permutations([1, 2]) [1, 2] [2, 1] permutations([1, 2, 3]) [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1] 编辑:Eliben指出类似于我的解决scheme,虽然更简单,所以我select它作为接受的答案,虽然Python 2.6 +具有itertools模块中的内置解决scheme: import itertools itertools.permutations([1, 2, 3])
哪些IDE(“graphics用户界面/编辑器”)其他人使用Python编码?
我有一个名为requests.py的脚本导入请求包。 该脚本无法从包中访问属性,或者无法导入它们。 为什么不这样做,我该如何解决? 以下代码引发了一个AttributeError 。 import requests res = requests.get('http://www.google.ca') print(res) Traceback (most recent call last): File "/Users/me/dev/rough/requests.py", line 1, in <module> import requests File "/Users/me/dev/rough/requests.py", line 3, in <module> requests.get('http://www.google.ca') AttributeError: module 'requests' has no attribute 'get' 下面的代码引发了一个ImportError 。 from requests import get res = get('http://www.google.ca') print(res) Traceback (most recent call last): File "requests.py", […]
我想了解super() 。 从外观上看,这两个子类都可以创build得很好。 我很好奇下面的孩子class之间实际上有什么区别: class Base(object): def __init__(self): print "Base created" class ChildA(Base): def __init__(self): Base.__init__(self) class ChildB(Base): def __init__(self): super(ChildB, self).__init__() ChildA() ChildB()
我正在使用subprocess模块来启动一个subprocess并连接到它的输出stream(标准输出)。 我想能够在其stdout上执行非阻塞读取。 有没有办法让.readline非阻塞或在我调用.readline之前检查stream中是否有数据? 我希望这是可移植的,或者至less在Windows和Linux下工作。 这里是我现在是怎么做的(如果没有数据可用,它会阻止在.readline ): p = subprocess.Popen('myprogram.exe', stdout = subprocess.PIPE) output_str = p.stdout.readline()