python - 如何在 Python 中初始化空列表字典?

标签 python list dictionary

我尝试以编程方式创建列表字典,但无法单独寻址字典键。每当我创建列表字典并尝试附加到一个键时,所有这些都会更新。这是一个非常简单的测试用例:

data = {}
data = data.fromkeys(range(2),[])
data[1].append('hello')
print data

实际结果:{0: ['hello'], 1: ['hello']}

预期结果:{0: [], 1: ['hello']}

这是有效的

data = {0:[],1:[]}
data[1].append('hello')
print data

实际结果和预期结果:{0: [], 1: ['hello']}

为什么 fromkeys 方法没有按预期工作?

最佳答案

[]作为第二个参数传递给dict.fromkeys()时,生成的dict中的所有值都将是< em>相同列表对象。

在 Python 2.7 或更高版本中,使用 dict comprehension相反:

data = {k: [] for k in range(2)}

在早期版本的 Python 中,没有字典理解,但可以将列表理解传递给 dict 构造函数:

data = dict([(k, []) for k in range(2)])

在 2.4-2.6 中,还可以将生成器表达式传递给 dict 以及周围的括号 can be dropped :

data = dict((k, []) for k in range(2))

关于python - 如何在 Python 中初始化空列表字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59362960/

相关文章:

python - 对带有子列表的可迭代对象的每个元素应用一个函数

Swift - 取字典元素的平均值

Python:替换字符串中的特定字符(重复问题)

Python:将字符串转换为代码

C# - 用另一个数组分割数组

python - 在 Python 中使用不同且单独的回归器来运行 VARMAX 方程

javascript - iPython/Jupyter 笔记本 : How to Embed Interactive Graph Using Desmos API?

python - Networkx:pagerank、pagerank_numpy 和 pagerank_scipy 之间的区别?

python - 如何在单击 cli 中使用 python 日志输出日志?

将目录树表示为递归列表