如果之前有人问过这个问题,请原谅我。我不知道如何搜索它。
我非常熟悉以下习语:
def foo():
return [1,2,3]
[a,b,c] = foo()
(d,e,f) = foo()
其中左侧包含的值将根据右侧函数返回的值进行分配。
我也知道你能做到
def bar():
return {'a':1,'b':2,'c':3}
(one, two, three) = bar()
[four, five, six] = bar()
其中从右侧返回的键将分配给左侧的容器。
但是,我很好奇,有没有办法在 Python 2.6 或更早版本中执行以下操作:
{letterA:one, letterB:two, letterC:three} = bar()
它的工作方式是否与序列到序列的工作方式相同?如果没有,为什么?天真地尝试按照我所写的那样执行此操作将会失败。
最佳答案
字典项目没有顺序,所以虽然这有效:
>>> def bar():
... return dict(a=1,b=2,c=3)
>>> bar()
{'a': 1, 'c': 3, 'b': 2}
>>> (lettera,one),(letterb,two),(letterc,three) = bar().items()
>>> lettera,one,letterb,two,letterc,three
('a', 1, 'c', 3, 'b', 2)
您可以看到,您不一定能预测变量将如何分配。您可以在 Python 3 中使用collections.OrderedDict
来控制它。
关于python - 分配给字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822519/