相关疑难解决方法(0)

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

我尝试以编程方式创建列表字典是不允许我单独地解决字典键.每当我创建列表字典并尝试附加到一个键时,所有这些都会更新.这是一个非常简单的测试用例:

data = {}
data = data.fromkeys(range(2),[])
data[1].append('hello')
print data
Run Code Online (Sandbox Code Playgroud)

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

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

这是有效的

data = {0:[],1:[]}
data[1].append('hello')
print data
Run Code Online (Sandbox Code Playgroud)

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

为什么fromkeys方法不能按预期工作?

python dictionary list

77
推荐指数
3
解决办法
10万
查看次数

dict.fromkeys都指向同一个列表

这让我有点悲伤......

我从列表中创建了一个字典

l = ['a','b','c']
d = dict.fromkeys(l, [0,0]) # initializing dictionary with [0,0] as values

d['a'] is d['b'] # returns True
Run Code Online (Sandbox Code Playgroud)

如何使字典的每个值成为单独的列表?这是否可能不迭代所有键并将它们设置为等于列表?我想修改一个列表而不更改所有其他列表.

python

55
推荐指数
3
解决办法
1万
查看次数

python:为什么listA.append('a')会影响listB?

这是我的代码:

In [8]: b=dict.fromkeys([1,2,3,4], [])

In [9]: b[1].append(1)

In [10]: b[2].append(2)

In [11]: b[1]
Out[11]: [1, 2]

In [12]: b[2]
Out[12]: [1, 2]

In [13]: b
Out[13]: {1: [1, 2], 2: [1, 2], 3: [1, 2], 4: [1, 2]}
Run Code Online (Sandbox Code Playgroud)

我希望:{1:[1],2:[2],3:[],4:[]}

我猜这可能是因为b [X]只是一个"参考",它们都是指同一个列表.

然后我用int对象替换[].结果让我更加困惑:

In [15]: b=dict.fromkeys([1,2,3,4], 1)

In [16]: b[1] += 1

In [17]: b[2] += 1

In [18]: b
Out[18]: {1: 2, 2: 2, 3: 1, 4: 1}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,此int对象1不是referance.

然后我用['a']替换[]:

In [19]: b=dict.fromkeys([1,2,3,4], ['a'])

In [20]: b[1].append(1)

In [21]: …
Run Code Online (Sandbox Code Playgroud)

python list

4
推荐指数
1
解决办法
124
查看次数

标签 统计

python ×3

list ×2

dictionary ×1