小编ast*_*rog的帖子

将字符串转换为字典的简单方法

将一串keyword =值转换为字典的最简单方法是什么,例如以下字符串:

name="John Smith", age=34, height=173.2, location="US", avatar=":,=)"
Run Code Online (Sandbox Code Playgroud)

到下面的python字典:

{'name':'John Smith', 'age':34, 'height':173.2, 'location':'US', 'avatar':':,=)'}
Run Code Online (Sandbox Code Playgroud)

'avatar'键只是为了表明字符串可以包含=和,所以简单的'拆分'是不行的.有任何想法吗?谢谢!

python string dictionary

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

传递具有无效键=值对的kwargs来运行

以下代码:

def f(a=1):
    pass

kwargs = {}
kwargs['a'] = 1
kwargs['b'] = 2

f(**kwargs)
Run Code Online (Sandbox Code Playgroud)

(正确)引发异常:

Traceback (most recent call last):
  File "tt.py", line 8, in <module>
    f(**kwargs)
TypeError: f() got an unexpected keyword argument 'b'
Run Code Online (Sandbox Code Playgroud)

有没有办法,使用functools或其他方法来绕过这个并找出函数没有使用哪些参数,以便能够将它们传递给另一个函数?例如,我可能有另一个功能:

def g(a=None, b=None):
    pass
Run Code Online (Sandbox Code Playgroud)

我想打电话给你,比如说

g(**kwargs)
Run Code Online (Sandbox Code Playgroud)

但我只想b通过,因为a在之前的功能中已经"用完了".

现在我知道这不是理想的编码,但有些情况下它可以派上用场,而且实际上很容易向用户解释,例如"附加参数将传递给f,任何未传递给f的参数都将被传递给g".

python

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

python numpy savetxt

有人能说出我在做错了吗?

import numpy as np

a = np.array([1,2,3,4,5],dtype=int)
b = np.array(['a','b','c','d','e'],dtype='|S1')

np.savetxt('test.txt',zip(a,b),fmt="%i %s")
Run Code Online (Sandbox Code Playgroud)

输出是:

Traceback (most recent call last):
  File "loadtxt.py", line 6, in <module>
    np.savetxt('test.txt',zip(a,b),fmt="%i %s")
  File "/Users/tom/Library/Python/2.6/site-packages/numpy/lib/io.py", line 785, in savetxt
    fh.write(format % tuple(row) + '\n')
TypeError: %d format: a number is required, not numpy.string_
Run Code Online (Sandbox Code Playgroud)

python numpy

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

numpy object_数组中最长的字符串

我正在使用一个numpy object_数组来存储可变长度的字符串,例如

a = np.array(['hello','world','!'],dtype=np.object_)
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以在不绕过所有元素的情况下找到数组中最长字符串的长度?

python arrays numpy

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

sqlite3和cursor.description

在python中使用sqlite3模块时,除列名之外的cursor.description的所有元素都设置为None,因此该元组不能用于查找查询结果的列类型(与其他符合DB-API的模块不同).获取列的类型pragma table_info(table_name).fetchall()以获取表的描述,将其存储在内存中,然后将cursor.description中的列名与整个表描述相匹配是唯一的方法吗?

python sqlite python-db-api

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

如何为并行代码定义可伸缩性?

我有兴趣了解是否有关于并行代码是否可扩展的正式定义,或者它是否只是一个时髦的词?如果我将串行墙时间测量为t_S并将平行墙时间测量为t(P),那么我可以将效率定义为E(P)= t_S /(t(P)*P),是否有一个标准如何效率必须随P(和问题大小)而变化才能使代码具有可扩展性?

parallel-processing scalability

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

Fortran MPI代码中的标准输出

我有一个并行的fortran代码,我只希望rank = 0进程能够写入stdout,但我不想乱丢代码:

if(rank==0) write(*,*) ...
Run Code Online (Sandbox Code Playgroud)

所以我想知道做以下事情是不是一个好主意,或者是否有更好的方法?

program test

  use mpi

  implicit none

  integer :: ierr
  integer :: nproc
  integer :: rank

  integer :: stdout

  call mpi_init(ierr)
  call mpi_comm_rank(mpi_comm_world, rank, ierr)
  call mpi_comm_size(mpi_comm_world, nproc, ierr)

  select case(rank)
  case(0)
     stdout = 6
  case default
     stdout = 7
     open(unit=stdout, file='/dev/null')
  end select

  write(stdout,*) "Hello from rank=", rank

  call mpi_finalize(ierr)

end program test
Run Code Online (Sandbox Code Playgroud)

这给出了:

$ mpirun -n 10 ./a.out
Hello from rank=           0
Run Code Online (Sandbox Code Playgroud)

谢谢你的建议!

fortran mpi

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

使用Python'swith'语句将stdout和stderr记录到日志文件中

我想使用'with'语句将一大块Python代码的std输出记录到文件中:

with log_to_file('log'):
    # execute code
Run Code Online (Sandbox Code Playgroud)

最简单的方法是log_to_file手动定义,例如:

import sys

class log_to_file():
    def __init__(self, filename):
        self.f = open(filename, 'wb')

    def __enter__(self):
        self.stdout = sys.stdout
        self.stderr = sys.stderr
        sys.stdout = self.f
        sys.stderr = self.f

    def __exit__(self, type, value, traceback):
        sys.stdout = self.stdout
        sys.stderr = self.stderr
Run Code Online (Sandbox Code Playgroud)

或者是否有可以执行此操作的内置类?

python

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

使用xvfb-run运行py.test

我试图在Jenkins中运行使用PyQt4的Python包,测试创建窗口.由于我在Jenkins中运行测试,我需要重定向图形输出,所以我使用的是xvfb-run.大多数情况下,这是有效的,但只有一小部分时间,测试将随机失败:

/usr/bin/xvfb-run: line 171: kill: (27375) - No such process
Run Code Online (Sandbox Code Playgroud)

如果我重新运行测试,它在大多数时间都能正常工作(所以这只是一次性问题).

有没有人遇到过这个问题?您对改进测试稳定性的变通方法有什么想法吗?

python testing pyqt4 xvfb

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

使用matplotlib的plot_directive显示每一步的更新情节

我正在使用Matplotlib的plot_directive Sphinx扩展,并且有类似的东西:

.. plot::
   :context:
   :include-source:

    import matplotlib.pyplot as plt
    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)
    [stuff here]

Text here

.. plot::
   :context:
   :include-source:

    ax.set_xlim(0., 100.)
    ax.set_ylim(0., 100.)
Run Code Online (Sandbox Code Playgroud)

问题是该情节第二次没有出现.我可以获得另一个绘图的唯一方法是实例化一个新的plt.figure().有没有办法强制输出图出现在上例中的第二个..plot指令之后,而无需从头开始重新创建新图?

python plot matplotlib python-sphinx

5
推荐指数
0
解决办法
98
查看次数