Python 我能确定字典里的顺序吗?
我能确定Python字典中的顺序吗 函数Python 我能确定字典里的顺序吗?,python,dictionary,iterable-unpacking,Python,Dictionary,Iterable Unpacking,我能确定Python字典中的顺序吗 函数op.GetTangent(id)返回一个字典,其中包含与'vl'和'vr'相关联的两个值。我想用懒洋洋的方式把它打开 vr, vl = op.GetTangent(id).values() 我是否可以确保vr和vl具有正确的值,或者是否存在交换它们的情况?否,您永远不应该依赖value方法返回的条目顺序。您有几个简单的选择: 调用结果列表上的sorted(如果可以对值进行排序) 对项目调用sorted,并取出值 使用collections.Order
op.GetTangent(id)
返回一个字典,其中包含与'vl'
和'vr'
相关联的两个值。我想用懒洋洋的方式把它打开
vr, vl = op.GetTangent(id).values()
我是否可以确保
vr
和vl
具有正确的值,或者是否存在交换它们的情况?否,您永远不应该依赖value
方法返回的条目顺序。您有几个简单的选择:
- 调用结果列表上的
(如果可以对值进行排序)sorted
- 对项目调用
,并取出值sorted
- 使用
collections.OrderedDict
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')]
如果您只需要一次。为了完全避免任何疑问,我的系统上的实际输出:
vr, vl = map(op.GetTangent(id).get, ('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}
运行PYTHONHASHSEED设置为“random”的Python3.2.3,相同代码的不同运行在字典中有不同的项目顺序。考虑到他只是拉取值
sorted
在这里没有帮助。