小编Jim*_*ard的帖子

从列表中填充字典

我有一个字符串列表(来自.tt文件),如下所示:

list1 = ['have\tVERB', 'and\tCONJ', ..., 'tree\tNOUN', 'go\tVERB']
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个看起来像的字典:

dict1 = { 'have':'VERB', 'and':'CONJ', 'tree':'NOUN', 'go':'VERB' }
Run Code Online (Sandbox Code Playgroud)

我在考虑替代,但它效果不好.有没有办法将标签字符串标记'\t'为分隔符?

python dictionary list python-3.x

5
推荐指数
3
解决办法
1012
查看次数

使用字节码导入 python 模块而不使用源代码

来自Python书籍:

学习Python。第五版,第 #727 页

我读了以下内容:

如果Python在搜索路径上只找到一个字节码文件并且没有找到源代码,那么它只是直接加载字节码;这意味着您可以将程序仅作为字节代码文件发送,并避免发送源代码

但是当在 Python 3.5 上尝试相同的操作时,它不起作用:

~/Python/Module_Test$ cat a.py
a = "abc"
l = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

导入模块'a'创建的字节码文件如下:

~/Python/Module_Test/__pycache__$ ls
a.cpython-35.pyc
Run Code Online (Sandbox Code Playgroud)

现在我删除了该'a.py'文件并从字节码目录中导入了该模块'a'

~/Python/Module_Test/__pycache__$ python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul  2 2016, 17:53:06) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'a'
Run Code Online (Sandbox Code Playgroud)

我什至尝试将字节码目录添加到搜索路径,但仍然无法加载模块:

>>> …
Run Code Online (Sandbox Code Playgroud)

python python-import python-3.x

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

我们如何将字节作为关键字参数的关键字传递给函数?

让我们举个例子:

def fun(**args):
    print(str(args))

dic = {'name': 'Pulkit'}
fun(**dic)
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,我有以下输出:

{'name': 'Pulkit'}
Run Code Online (Sandbox Code Playgroud)

现在让我们将值作为字节传递:

dic_vb = {'name': b'Pulkit'}
fun(**dic_vb)
Run Code Online (Sandbox Code Playgroud)

这也很好,并具有以下输出:

{'name': b'Pulkit'}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将密钥作为字节时,事情会发生变化:

dic_kb = {b'name': 'Pulkit'}
Run Code Online (Sandbox Code Playgroud)

这导致TypeError说:

TypeError: fun() keywords must be strings
Run Code Online (Sandbox Code Playgroud)

有没有办法我们可以传递字节作为关键字参数.我还在repo检查了CPython代码,它处理关键字参数,似乎我们无法通过.是否有任何解决方法或我需要确保传递unicodes.

我正在处理一个代码库,我们在Python 2上有很多这样的实例,需要移植到Python 3.所以唯一可能的方法是将所有关键字参数转换为unicodes?

python function keyword-argument python-3.x

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

Python中可解构的功能是什么?

deconstructiblePython 中的装饰器有什么作用?我遇到了这个装饰器,正在查看其他人的代码,但是我搜索了Python文档,却找不到该装饰器的实际功能?

@deconstructible
class UserValidator(object):
    def __call__(self, value):
        if value:
           etc
Run Code Online (Sandbox Code Playgroud)

给定上面的代码,对此类添加'deconstructible'有什么作用?

python django python-3.x

5
推荐指数
2
解决办法
3975
查看次数

我删除了我的字典,但我的dict_keys不介意,为什么呢?

因为dict.keys(和dict.itemsdict.values一样)返回字典对象的看法,我会认为他们删除从实际制作的字典对一个影响dict_keys我们从得到了他们.

使用简单的字典及其键:

d = {i:i for i in range(20)}
k = d.keys()  # similarly with d.values and d.items
Run Code Online (Sandbox Code Playgroud)

显然,事实并非如此:

del d
i = iter(k)
list(i) # works fine and prints the keys
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?

python dictionary python-3.x

5
推荐指数
2
解决办法
75
查看次数

如何根据先前的参数定义默认参数值?

我想定义一个resize(h, w)方法,并且我希望能够以两种方式之一调用它:

  1. resize(x,y)
  2. resize(x)

在第二次调用中,我希望y等于x. 我可以在方法定义中执行此操作,还是应该执行类似操作resize(x,y=None)并在内部进行检查:

if y is None:
    y = x
Run Code Online (Sandbox Code Playgroud)

python default-value python-3.x

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

为什么一些内置构造函数以小写字母开头?

为什么有些构造类似int(),list(),set()和许多其他用小写字母而不是大写字母开头的?如果不这样写Int(),List(),Set()等?

python naming-conventions

5
推荐指数
2
解决办法
68
查看次数

我可以使用self访问类变量吗?

我有一个Foo类变量的类remote.我可以remote使用self.remote?访问类变量吗?

class Foo:
   remote = False

   def __init__(self):
       self.remote = True 

   @classmethod
   def print_remote(cls):
       print(cls.remote) #prints False but why? 
Run Code Online (Sandbox Code Playgroud)

python class python-3.x

5
推荐指数
3
解决办法
1398
查看次数

比较Speed Python3和Julia

我开始编写一个程序进行非线性光束计算.我之所以选择Python,是因为它的Matlab就像代码一样,我正在进行速度测试(确保python是正确的语言来进行快速数值计算)并尝试熟悉python3.我尝试了一种算法,计算从t = 1到n的1/t ^ 2之和(来自书Julia High Perfromance),以比较python3与julia的速度.现在我有一些问题:

1)在我的计算中,朱莉娅没有预期的那么快?Julia ist JIT编译.它应该非常快.为什么python更快?

2)为什么python中的循环如此缓慢?

3)为什么python sum方法比numpy.sum方法慢

4)为什么python geting的sum函数与numpy.sum函数的解决方案略有不同?

我希望你能帮助我.

代码:

# Benchmark Python vs Julia
# (from Julia High Performance page 7 from Avik Sengupta)

import scipy as sp
import time

# Sum of 1/t^2 from t = 1 to n by using loops:
# --------------------------------------------
def pisum(w,n):
    u_sum = 0
    for vi in range(w):
        u_sum = 0
        for vj in range(1,n+1,1):
            u_sum += 1.0/(vj*vj)
    return u_sum

# Sum of 1/t^2 from t …
Run Code Online (Sandbox Code Playgroud)

python performance python-3.x julia

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

通过从另一个列表的第n个值中减去第n + 1个值来创建列表

我需要创建一个列表,它返回另一个列表的第n和第n + 1值之间的差异.有没有办法简化下面的代码以适用于任何大小的列表?

mylist = [1,5,15,30,60]

w = mylist[1] - mylist[0]
x = mylist[2] - mylist[1]
y = mylist[3] - mylist[2]
z = mylist[4] - mylist[3]

difflist = [w,x,y,z]

print difflist
Run Code Online (Sandbox Code Playgroud)

这将回归 [4,10,15,30]

python list python-2.7

5
推荐指数
2
解决办法
133
查看次数