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, '=', value
doc = 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中如何保持字典参数顺序?
请您参考如下方法:
I need to keep the order of the parameter, I mean, property comes first, then label until I get reouteDelay last.
那么您只是按错误的顺序做事——不需要有序的字典!尝试使用成对的元组来缓存,如下所示:
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 版本具有完全相同的语义,加上维护您希望的顺序的所需属性,并且性能至少一样好。通过关注“保持字典有序”,你关注的是错误的问题(唉,对于大多数人们寻求“有序字典”的情况!-)。
