小编Mik*_*ler的帖子

附加到列表的dict为每个键增加了价值

我有一个空列表字典,其中包含在开头声明的所有键:

>>> keys = ["k1", "k2", "k3"]
>>> d = dict.fromkeys(keys, [])
>>> d
{'k2': [], 'k3': [], 'k1': []}
Run Code Online (Sandbox Code Playgroud)

当我尝试将一个坐标对(列表["x1", "y1"])添加到其中一个键列表时,它会添加到所有键列表中:

>>> d["k1"].append(["x1", "y1"])
>>> d
{'k1': [['x1', 'y1']], 'k2': [['x1', 'y1']], 'k3': [['x1', 'y1']]}
Run Code Online (Sandbox Code Playgroud)

我在寻找的是:

>>> d
{'k1': [['x1', 'y1']], 'k3': [], 'k1': []}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Python 3中实现这一点?

python dictionary list python-3.x

7
推荐指数
1
解决办法
1123
查看次数

Anaconda 4.0.2是否已经在MKL上运行了numpy

我的系统中有Ananconda4.0.2.我尝试通过python控制台中的命令找出我的numpy配置:

import numpy as np
np.__config__.show()
Run Code Online (Sandbox Code Playgroud)

它返回以下输出

lapack_opt_info:
libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/home/<username>/anaconda2/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/home/<username>/anaconda2/include']
blas_opt_info:
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/home/<username>/anaconda2/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/home/<username>/anaconda2/include']
openblas_lapack_info:
NOT AVAILABLE
lapack_mkl_info:
libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread','mkl_core', 'iomp5', 'pthread']
library_dirs = ['/home/<username>/anaconda2/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/home/<username>/anaconda2/include']
blas_mkl_info:
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs …
Run Code Online (Sandbox Code Playgroud)

python numpy anaconda

7
推荐指数
1
解决办法
6233
查看次数

由Python 3.5破坏的Jupyter笔记本

当我将我的Python版本从3.4更新到3.5(在Mac El Capitan上)时,我重新安装了Jupyter但是当我运行它并创建一个新的Python 3笔记本时,它会立即告诉我存在内核错误,如果我点击这个,然后我收到此错误消息:

Traceback (most recent call last):   File
"/usr/local/lib/python3.5/site-packages/notebook/base/handlers.py",
line 436, in wrapper
    result = yield gen.maybe_future(method(self, *args, **kwargs))   File
"/usr/local/lib/python3.5/site-packages/notebook/services/sessions/handlers.py",
line 56, in post
    model = sm.create_session(path=path, kernel_name=kernel_name)   File
"/usr/local/lib/python3.5/site-packages/notebook/services/sessions/sessionmanager.py",
line 66, in create_session
    kernel_name=kernel_name)   File "/usr/local/lib/python3.5/site-packages/notebook/services/kernels/kernelmanager.py",
line 84, in start_kernel
    **kwargs)   File "/usr/local/lib/python3.5/site-packages/jupyter_client/multikernelmanager.py",
line 109, in start_kernel
    km.start_kernel(**kwargs)   File "/usr/local/lib/python3.5/site-packages/jupyter_client/manager.py",
line 244, in start_kernel
    **kw)   File "/usr/local/lib/python3.5/site-packages/jupyter_client/manager.py",
line 190, in _launch_kernel
    return launch_kernel(kernel_cmd, **kw)   File "/usr/local/lib/python3.5/site-packages/jupyter_client/launcher.py",
line 123, in launch_kernel
    proc = Popen(cmd, **kwargs)   File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", …
Run Code Online (Sandbox Code Playgroud)

python ipython python-3.x ipython-notebook jupyter

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

在Python中单独处理相同类型的异常

说我有以下四个变量:

>>> f1 = (print, 1, 2 ,3 ,4)
>>> f2 = (exit, 1, 2 ,3 ,4)
>>> f3 = (1, 2, 3, 4)
>>> f4 = 4
Run Code Online (Sandbox Code Playgroud)

在一个假设的程序中,我希望每个变量都包含一个元组,其第一个项应该是函数的名称,其后续项应该按顺序表示函数的参数.

我可以像这样调用以这种方式存储的函数:

>>> f1[0](*f1[1:])
1 2 3 4
Run Code Online (Sandbox Code Playgroud)

但是,大多数这些变量都不是例外格式,我希望能够封装它们在try/ exceptblocks中的调用,以便处理这些情况.

现在,即使函数调用了f2,f3并且f4由于完全不同的原因而中断,它们都会抛出同样的异常,a TypeError:

>>> f2[0](*f2[1:])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __call__() takes from 1 to 2 positional arguments but 5 were given
>>> f3[0](*f3[1:])
Traceback (most …
Run Code Online (Sandbox Code Playgroud)

python exception

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

熊猫在Windows终端中绘图

我有一个简单的pandas数据框.试图从IPython的Windows 10终端会话中绘图给我这样的:

In [4]: df = pd.DataFrame({'Y':[1, 3, 5, 7, 9], 'X':[0, 2, 4, 6, 8]})

In [5]: df
Out[5]:
   X  Y
0  0  1
1  2  3
2  4  5
3  6  7
4  8  9

In [6]: df.plot(kind='line')
Out[6]: <matplotlib.axes._subplots.AxesSubplot at 0x26c4d366940>

In [7]:
Run Code Online (Sandbox Code Playgroud)

我看不到任何情节.有什么我做错了吗?

python interactive matplotlib ipython pandas

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

使用嵌套键对Dict进行Python递归搜索

我最近不得不用嵌套的字典/列表组合解决实际数据系统中的问题.我在这方面工作了很长一段时间并提出了一个解决方案,但我非常不满意.我不得不求助于使用globals()和命名的临时全局参数.

我不喜欢使用全局变量.这只是要求注射漏洞.我觉得必须有更好的方法来执行这项任务而不诉诸全局变量.

问题数据集:

d = {
    "k":1,
    "stuff":"s1",
    "l":{"m":[
        {
            "k":2,
            "stuff":"s2",
            "l":None
        },
        {
            "k":3,
            "stuff":"s3",
            "l":{"m":[
                {
                    "k":4,
                    "stuff":"s4",
                    "l":None
                },
                {
                    "k":5,
                    "stuff":"s5",
                    "l":{"m":[
                        {
                            "k":6,
                            "stuff":"s6",
                            "l":None
                        },
                    ]}
                },
            ]}
        },
    ]}
}
Run Code Online (Sandbox Code Playgroud)

期望的输出:

[{'k': 1, 'stuff': 's1'},
 {'k': 2, 'stuff': 's2'},
 {'k': 3, 'stuff': 's3'},
 {'k': 4, 'stuff': 's4'},
 {'k': 5, 'stuff': 's5'},
 {'k': 6, 'stuff': 's6'}]
Run Code Online (Sandbox Code Playgroud)

我的解决方案

def _get_recursive_results(d, iter_key, get_keys):
    if not 'h' in globals():
        global h
        h = [] …
Run Code Online (Sandbox Code Playgroud)

python recursion dictionary global list

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

pip upgrade 自行卸载

我今天第一次使用 pip,我得到了有用的消息

您使用的是 pip 版本 8.1.1,但是版本 9.0.1 可用。您应该考虑通过“pip install --upgrade pip”命令进行升级。

所以,我继续前进

pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

但事情并没有按计划进行……

Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |????????????????????????????????| 1.3MB 510kB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Uninstalling pip-8.1.1:
Exception:
Traceback (most recent call last):
  File "//anaconda/lib/python2.7/site-packages/pip/basecommand.py", line 209, in main
    status = self.run(options, args)
  File "//anaconda/lib/python2.7/site-packages/pip/commands/install.py", line 317, in run
    prefix=options.prefix_path,
  File "//anaconda/lib/python2.7/site-packages/pip/req/req_set.py", line 726, in install
    requirement.uninstall(auto_confirm=True)
  File "//anaconda/lib/python2.7/site-packages/pip/req/req_install.py", line 746, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "//anaconda/lib/python2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove …
Run Code Online (Sandbox Code Playgroud)

python pip anaconda

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

不能将PySide与Anaconda一起使用

我刚安装了Anaconda for Python 3,然后安装了PySide

sudo apt-get install python3-pyside
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用它抛出Anaconda的python版本并键入import PySide但是给了我这个错误ImportError: No module named 'PySide'

但是当我尝试普通的Python解释器时,它工作得很好,那么我怎么能让它与Anaconda一起工作呢?

python pyside python-3.x anaconda

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

Python:如何在给定索引列表的字符串中替换子字符串

我有一个字符串:

"A XYZ B XYZ C"
Run Code Online (Sandbox Code Playgroud)

和索引元组列表:

((2, 5), (8, 11))
Run Code Online (Sandbox Code Playgroud)

我想应用索引定义的每个子字符串替换它们的总和:

A 7 B 19 C
Run Code Online (Sandbox Code Playgroud)

我无法使用字符串替换,因为它将匹配XYZ的两个实例.随着索引在整个过程中转移,使用索引信息替换将在第二次和第四次迭代时中断.

这个问题有一个很好的解决方案吗?

UPDATE.例如,给出了字符串.我不是先验地知道它的内容,也不能在解决方案中使用它们.

我的脏解决方案是:

text = "A XYZ B XYZ C"
replace_list = ((2, 5), (8, 11))

offset = 0
for rpl in replace_list:
    l = rpl[0] + offset
    r = rpl[1] + offset

    replacement = str(r + l)
    text = text[0:l] + replacement + text[r:]

    offset += len(replacement) - (r - l)
Run Code Online (Sandbox Code Playgroud)

这取决于索引元组的升序顺序.可以做得更好吗?

python string

6
推荐指数
3
解决办法
1038
查看次数

Python:在列表中存储多个数据帧

我有一个循环读取文档中的 Excel 工作表。我想将它们全部存储在一个列表中:

  DF_list= list()

  for sheet in sheets:
     df= pd.read_excel(...)
     DF_list = DF_list.append(df)
Run Code Online (Sandbox Code Playgroud)

如果我输入:

[df df df df]
Run Code Online (Sandbox Code Playgroud)

有用。

抱歉,我有 Matlab 背景,不太习惯 Python,但我喜欢它。谢谢。

python store list dataframe pandas

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