我可以确定 Python 字典中的顺序吗?
该函数op.GetTangent(id)
返回一个字典,其中包含与'vl'
和关联的两个值'vr'
。我想以懒惰的方式打开它。
vr, vl = op.GetTangent(id).values()
我可以确定vr
并vl
具有正确的价值吗?或者是否存在交换它们的情况?
我可以确定 Python 字典中的顺序吗?
该函数op.GetTangent(id)
返回一个字典,其中包含与'vl'
和关联的两个值'vr'
。我想以懒惰的方式打开它。
vr, vl = op.GetTangent(id).values()
我可以确定vr
并vl
具有正确的价值吗?或者是否存在交换它们的情况?
不,您永远不应该依赖该values
方法返回的条目的顺序。您有几个简单的选择:
sorted
结果列表(如果可以对值进行排序)sorted
项目并提取值collections.OrderedDict
vr, vl = map(op.GetTangent(id).get, ('vr', 'vl'))
没有永不。
而是做
getbyname = lambda d, *kk: [d[k] for k in kk]
并将其用作
vr, vl = getbyname(op.GetTangent(id), 'vr', 'vl')
或者只是做
d = op.GetTangent(id)
vr, vl = [d[i] for i in ('vr', 'vl')]
如果你只需要一次。
只是为了完全避免任何疑问,我系统上的实际输出:
C:\Python32>python -c "print({'vr':1, 'vl':2})"
{'vr': 1, 'vl': 2}
C:\Python32>python -c "print({'vr':1, 'vl':2})"
{'vl': 2, 'vr': 1}
那是运行 Python 3.2.3 并将 PYTHONHASHSEED 设置为“随机”,并且相同代码的不同运行在字典中具有不同的项目顺序。