【发布时间】:2019-06-12 22:19:39
【问题描述】:
我正在尝试在 Python 3.6 中编写一个函数 spread(我不能使用任何更新的版本),到目前为止,我已经得到了如下所示的内容:
d = {"a": 1, "b": 2, "c": 3}
a, b, c = spread(d, ['a', 'b', 'c'])
a
>> 1
b
>> 2
c
>> 3
问题是:存在某种重复,因为左侧的位置必须与函数第二个参数上的键列表匹配才能有意义。因此,更改键列表的顺序,变量a 将保存与d['a'] 不同的值。我需要保持一致性
a, b, c = spread(d) # how?
或spread(d, ???)。我不考虑使用None 初始化a, b, c,然后将它们作为列表传递。
关于如何解决这个问题的任何想法或线索?甚至可能吗? 谢谢!
【问题讨论】:
-
您能否添加一个示例,说明“spread”在 ES6 中的作用?
-
为什么不直接访问字典中的值呢?通常不需要像这样污染模块名称空间
-
使用
locals()实际上是一个非常有趣的线索,感谢@Graipher。我不知道您的回复为何被删除): -
这似乎是 javascript 的规范参考:Object destructuring
-
dict对象并不是 javascript 对象的真正替代品。dict对象更像 Javascript Map 对象。如果没有 hacky globals 的东西,你无法在 Python 中实现这一点,而对于本地分配,它需要更多 hacky 的东西。
标签: python