我有一个空列表字典,其中包含在开头声明的所有键:
>>> 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中实现这一点?
我的系统中有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版本从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) 说我有以下四个变量:
>>> 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) 我有一个简单的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)
我看不到任何情节.有什么我做错了吗?
我最近不得不用嵌套的字典/列表组合解决实际数据系统中的问题.我在这方面工作了很长一段时间并提出了一个解决方案,但我非常不满意.我不得不求助于使用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) 我今天第一次使用 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) 我刚安装了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一起工作呢?
我有一个字符串:
"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)
这取决于索引元组的升序顺序.可以做得更好吗?
我有一个循环读取文档中的 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 ×10
anaconda ×3
list ×3
python-3.x ×3
dictionary ×2
ipython ×2
pandas ×2
dataframe ×1
exception ×1
global ×1
interactive ×1
jupyter ×1
matplotlib ×1
numpy ×1
pip ×1
pyside ×1
recursion ×1
store ×1
string ×1