更新:Python 3.7+可确保保留插入顺序的字典
我想使用.py文件,例如配置文件。
因此,使用{...}
表示法,我可以使用字符串作为键来创建字典,但是在标准的python字典中定义顺序丢失了。
我的问题:是否可以覆盖{...}
表示法,以便获得OrderedDict()
而不是dict()
?
我希望仅使用OrderedDict(dict = OrderedDict
)覆盖dict构造函数即可,但没有用。
例如:
dict = OrderedDict
dictname = {
'B key': 'value1',
'A key': 'value2',
'C key': 'value3'
}
print dictname.items()
输出:
[('B key', 'value1'), ('A key', 'value2'), ('C key', 'value3')]
参考方案
这几乎可以为您提供所需的语法:
class _OrderedDictMaker(object):
def __getitem__(self, keys):
if not isinstance(keys, tuple):
keys = (keys,)
assert all(isinstance(key, slice) for key in keys)
return OrderedDict([(k.start, k.stop) for k in keys])
ordereddict = _OrderedDictMaker()
from nastyhacks import ordereddict
menu = ordereddict[
"about" : "about",
"login" : "login",
'signup': "signup"
]
编辑:另一个人独立发现了此问题,并在PyPI上发布了 odictliteral
软件包,该软件包提供了更全面的实现-使用该软件包代替
我想使用Python 2和3版本。我已经读过有关conda环境的用法,但是不断向终端source (de)activate py27写入内容似乎不方便。如picture所示,如何使用命令选择内核版本? 参考方案 您在该图像中寻找的是Jupyter Notebook。您需要使用Jupyter和所需的python版本创建环境:conda create -n py…
如何访问页面内的第三方跟踪参数(通过Python)? - python我已经搜索了很多,到目前为止,还无法确定如何访问页面中的第三方跟踪参数。使用下面的代码,我可以通过python request软件包访问页面的cookie,但是仅对于本地域,不会返回任何第三方的cookie /域:import requests # create session s = requests.session() # read data from …
为什么在for循环中将单词从复数形式转换为单数形式会花费这么长时间(Python 3)? - python这是我的代码,用于从CSV文件读取文本并将一列中的所有单词从复数形式转换为单数形式:import pandas as pd from textblob import TextBlob as tb data = pd.read_csv(r'path\to\data.csv') for i in range(len(data)): blob …
如何在“后台”中运行脚本的一部分(单个函数)? - python我在具有以下基本结构(伪代码)的服务器上运行python脚本:for data_item in data_items: processed_result=process_data(data_item); #this takes time T0 upload_result_to_site(processed_result) #this takes time T…
在返回'Response'(Python)中传递多个参数 - python我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…