pro*_*eek 1 python parameter-passing
__PRE__
在Python 2.6上运行此代码给我以下结果.
__PRE__
我需要保持参数的顺序,我的意思是,property先来,然后label直到我到routeDelay最后.
问:在Python中保持字典参数顺序的方法是什么?
我需要保持参数的顺序,我的意思是,属性首先出现,然后标记,直到我最后获得reouteDelay.
然后你只是按错误的顺序做事 - 不需要有序的词典!相反,请尝试使用缓存对的元组,如下所示:
def createNode(doc_, **param_):
cache = ( ('p', 'property'), , ('l', 'label'), ('td', 'totalDelay'),
('rd', 'routeDelay'), ('ld', 'logicDelay') )
for index, newIndex in cache:
if index not in param_:
continue
value = param_[index]
print newIndex, '=', value
Run Code Online (Sandbox Code Playgroud)
这与您的版本具有完全相同的语义createNode,加上维护您希望的顺序所需的属性,并且性能至少同样好.通过专注于"保持字典顺序",你专注于错误的问题(唉,大多数情况下,人们伸手去拿"有序词典"!).
常规字典不会,您将不得不使用有序字典.看看这些链接:
如果你想谷歌更多,请尝试使用搜索词"python ordered dictionary".我记得在这里看过一些有序的字典相关问题,所以如果由于某些原因上述链接不合适,也许你可以在其他问题上找到更好的东西.
更新:Mark建议使用元组列表实际上可能非常好,但命名元组可能更方便:文档中的相关片段.此外,如果您计划对数据进行一些序列化/反序列化并希望快速完成,请查看Google的协议缓冲区(可用的Python工具).