python - 分配给字典

标签 python dictionary

如果之前有人问过这个问题,请原谅我。我不知道如何搜索它。

我非常熟悉以下习语:

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/

相关文章:

python - Pandas :将 int64 年转换为仅显示年份的日期时间

python - 如何计算Python中单调增长序列的估计?

.Net core字典中的Mongodb $inc运算符

python - 如何将递增的数字附加到字典值中?

scala - 使用默认值填充可变映射或替代可变映射以实现 Scala 函数内存

python - var/www/html 中没有 index.lighttpd.html

python - 使用 dask 多线程模块

python - python中关于邻接矩阵的Dijkstra算法

python - 将字典值转换为值列表 python

c# - 使用设计模式重构多个变量