好的,我可以使用OrderedDict了json.dump
.也就是说,OrderedDict可以用作JSON的输入.
但它可以用作输出吗?如果是这样的话?在我的情况下,我想load
进入OrderedDict,这样我就可以保持文件中键的顺序.
如果没有,是否有某种解决方法?
我有一个命令行脚本,我运行了很多参数.我现在已经到了一个我有太多参数的地方,我想也有一些字典形式的参数.
因此,为了简化操作,我希望使用设置文件来运行脚本.我真的不知道用什么库来解析文件.这样做的最佳做法是什么?我当然可以自己敲一些东西,但是如果有一些库,那我就是耳朵.
一些"要求":
pickle
我希望它是一个可以轻松阅读和编辑的直接文本文件.一个简化的伪示例文件:
truck:
color: blue
brand: ford
city: new york
cabriolet:
color: black
engine:
cylinders: 8
placement: mid
doors: 2
Run Code Online (Sandbox Code Playgroud) 在列表中找到大于x的第一个索引的最Pythonic方法是什么?
例如,用
list = [0.5, 0.3, 0.9, 0.8]
Run Code Online (Sandbox Code Playgroud)
功能
f(list, 0.7)
Run Code Online (Sandbox Code Playgroud)
会回来的
2.
Run Code Online (Sandbox Code Playgroud) 下面有更有效的方法吗?我希望将两个日期之间的年份差异作为单个标量.欢迎任何建议.
from datetime import datetime
start_date = datetime(2010,4,28,12,33)
end_date = datetime(2010,5,5,23,14)
difference = end_date - start_date
difference_in_years = (difference.days + difference.seconds/86400)/365.2425
Run Code Online (Sandbox Code Playgroud) 我正在使用生成器在列表中执行搜索,就像这个简单的例子:
>>> a = [1,2,3,4]
>>> (i for i, v in enumerate(a) if v == 4).next()
3
Run Code Online (Sandbox Code Playgroud)
(只是为了对示例进行框架化,我使用的列表与上面的列表相比要长得多,而且条目有点复杂int
.我这样做,所以每次我都不会遍历整个列表搜索他们)
现在如果我改为那样i == 666
,它会返回一个,StopIteration
因为它找不到任何666
条目a
.
我怎样才能让它返回None
?我当然可以将它包装在一个try ... except
子句中,但有更多的pythonic方法吗?
说我有这个简单的python脚本:
file = open('C:\\some_text.txt')
print file.readlines()
print file.readlines()
Run Code Online (Sandbox Code Playgroud)
运行时,第一个打印件打印包含文件文本的列表,而第二个打印件打印空白列表.我想这并不完全出乎意料.但有没有办法"回卷"文件,以便我可以再次阅读?或者是重新打开它的最快方式?
有没有办法在Numpy中有效地实现1D阵列的滚动窗口?
例如,我有这个纯Python代码片段来计算1D列表的滚动标准偏差,其中observations
是1D值列表,并且n
是标准差的窗口长度:
stdev = []
for i, data in enumerate(observations[n-1:]):
strip = observations[i:i+n]
mean = sum(strip) / n
stdev.append(sqrt(250*sum([(s-mean)**2 for s in strip])/(n-1)))
Run Code Online (Sandbox Code Playgroud)
有没有办法在Numpy中完全执行此操作,即没有任何Python循环?标准偏差是微不足道的numpy.std
,但滚动窗口部分完全残留我.
我发现这篇关于Numpy滚动窗口的博文,但它似乎不适用于1D阵列.
对于列表,该方法list.index(x)
返回值为的第一个项的列表中的索引x
.但是如果我想查看列表项,而不仅仅是整个项目,我如何为此创建最多的Pythoninc方法?
例如,用
l = ['the cat ate the mouse',
'the tiger ate the chicken',
'the horse ate the straw']
Run Code Online (Sandbox Code Playgroud)
这个函数将返回1
与参数一起提供tiger
.
例如,假设我必须使用词典:
d_1 = {'peter': 1, 'adam': 2, 'david': 3}
Run Code Online (Sandbox Code Playgroud)
和
d_2 = {'peter': 14, 'adam': 44, 'david': 33, 'alan': 21}
Run Code Online (Sandbox Code Playgroud)
检查这两个词典是否包含相同的键集是最聪明的方法是什么?在上面的示例中,它应该返回,False
因为d_2
包含'alan'
键,而d_1
不是.请注意,我不想检查每个键的关联值是否相同,只是一组键是相同的.
所以我有一些我之前构建的Python C扩展,并在Win7中运行的32位Python中使用.我现在已经切换到64位Python,我在使用MinGW-w64构建C扩展时遇到问题.
我根据这篇文章对distutils进行了更改,但是我得到了一些奇怪的错误,表明出现了问题:
$ python setup.py build
running build
running build_ext
building 'MyLib' extension
c:\MinGW64\bin\x86_64-w64-mingw32-gcc.exe -mdll -O -Wall -Ic:\Python27\lib\site-packages\numpy\core\include -Ic:\Python27\include -Ic:\Python27\PC -c MyLib.c -o build\temp.win-amd64-2.7\Release\mylib.o
MyLib.c: In function 'initMyLib':
MyLib.c:631:5: warning: implicit declaration of function 'Py_InitModule4_64' [-Wimplicit-function-declaration]
writing build\temp.win-amd64-2.7\Release\MyLib.def
c:\MinGW64\bin\x86_64-w64-mingw32-gcc.exe -shared -s build\temp.win-amd64-2.7\Release\mylib.o build\temp.win-amd64-2.7\Release\MyLib.def -Lc:\Python27\libs -Lc:\Python27\PCbuild\amd64 -lpython27 -o build\lib.win-amd64-2.7\MyLib.pyd
build\temp.win-amd64-2.7\Release\mylib.o:MyLib.c:(.text+0x13d): undefined reference to `__imp_PyExc_ValueError'
build\temp.win-amd64-2.7\Release\mylib.o:MyLib.c:(.text+0x1275): undefined reference to `__imp_PyExc_ValueError'
build\temp.win-amd64-2.7\Release\mylib.o:MyLib.c:(.text+0x1eef): undefined reference to `__imp_PyExc_ImportError'
build\temp.win-amd64-2.7\Release\mylib.o:MyLib.c:(.text+0x1f38): undefined reference to `__imp_PyExc_AttributeError'
build\temp.win-amd64-2.7\Release\mylib.o:MyLib.c:(.text+0x1f4d): undefined reference to `__imp_PyCObject_Type'
build\temp.win-amd64-2.7\Release\mylib.o:MyLib.c:(.text+0x1f61): undefined reference to …
Run Code Online (Sandbox Code Playgroud)