[英]What's the best method to get the input function parameter into a dictionary in Python?
[英]What's the way to keep the dictionary parameter order in Python?
def createNode(doc_, **param_): cache = {'p':'property','l':'label','td':'totalDelay','rd':'routeDelay','ld':'logicDelay'} for index in param_: newIndex = cache[index] value = param_[index] print newIndex, '=', valuedoc = 10 createNode(doc, p='path', l='ifft4k_radix4_noUnolling_core.vi', td='3.0', ld='1.0', rd='2.0')
在Python 2.6上运行此代码可获得以下结果。
routeDelay = 2.0 property = path totalDelay = 3.0 logicDelay = 1.0 label = ifft4k_radix4_noUnolling_core.vi
我需要保持参数的顺序,我的意思是, property
是第一个,然后是label
直到最后得到routeDelay
。
问:如何在Python中保持字典参数的顺序?
我需要保持参数的顺序,我的意思是,属性是第一个,然后是标签,直到最后得到reouteDelay。
然后,您只是在以错误的顺序执行操作-不需要有序的词典! 相反,尝试对cache进行成对的元组,如下所示:
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
这具有与您的createNode
版本完全相同的语义,以及所需的保持所需顺序的属性,并且性能至少是一样的。 通过专注于“保持字典有序”,您将专注于错误的问题(as,在大多数情况下,人们都喜欢“有序词典”!-)。
常规字典不会做,您必须使用有序字典。 查看以下链接:
如果您想在Google周围搜索更多内容,请尝试使用搜索词“ python排序的字典”。 我记得在SO上看到过许多与命令字典相关的有序问题,因此,如果由于某些原因上述链接不足,也许您可以在其他问题中找到更好的解决方案。
更新:实际上,Mark建议使用元组列表可能是非常好的,但是命名元组可能更方便: docs中的相关片段 。 另外,如果您打算对数据进行一些序列化/反序列化,并且想真正快速地进行 ,请查看Google的协议缓冲区 (提供Python工具)。
字典不保留键的顺序。 您可以使用元组列表代替字典。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.