Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我能确定字典里的顺序吗?_Python_Dictionary_Iterable Unpacking - Fatal编程技术网

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

我能确定Python字典中的顺序吗

函数
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
在这里没有帮助。