【发布时间】:2019-01-11 15:34:11
【问题描述】:
我在 Python 2.6 和 3.2 中遇到了这种令我惊讶的行为:
>>> xs = dict.fromkeys(range(2), [])
>>> xs
{0: [], 1: []}
>>> xs[0].append(1)
>>> xs
{0: [1], 1: [1]}
但是,3.2 中的dict 理解表现出更礼貌的举止:
>>> xs = {i:[] for i in range(2)}
>>> xs
{0: [], 1: []}
>>> xs[0].append(1)
>>> xs
{0: [1], 1: []}
>>>
为什么fromkeys 会这样?
【问题讨论】:
-
区别和
[[]]*2和[[] for _ in range(2)]一样。 -
@J.F.Sebastian 我已经习惯了 [[]]*2 的含义和其他类似的问题。但是 fromkeys 让我大吃一惊。也许只是熟悉的问题...我几乎从不使用 fromkeys 方法...
标签: python