相关疑难解决方法(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的不需要的行为

我想使用初始化集合的字典(在Python 2.6中)dict.fromkeys,但结果结构表现奇怪.进一步来说:

>>>> x = {}.fromkeys(range(10), set([]))
>>>> x
{0: set([]), 1: set([]), 2: set([]), 3: set([]), 4: set([]), 5: set([]), 6: set([]), 7: set([]), 8: set([]), 9: set([])}
>>>> x[5].add(3)
>>>> x
{0: set([3]), 1: set([3]), 2: set([3]), 3: set([3]), 4: set([3]), 5: set([3]), 6: set([3]), 7: set([3]), 8: set([3]), 9: set([3])}
Run Code Online (Sandbox Code Playgroud)

我显然不想在所有集合中添加3,仅添加到对应的集合x[5].当然,我可以通过初始化避免问题x没有fromkeys,但我想了解我在这里失踪.

python

20
推荐指数
2
解决办法
3612
查看次数

为什么dict.get(key)起作用但dict [key]不起作用?

我试图根据字符串中有1的数目将某些数字的二进制字符串组合在一起。

这不起作用:

s = "0 1 3 7 8 9 11 15"
numbers = map(int, s.split())
binaries = [bin(x)[2:].rjust(4, '0') for x in numbers]

one_groups = dict.fromkeys(range(5), [])
for x in binaries:
    one_groups[x.count('1')] += [x]
Run Code Online (Sandbox Code Playgroud)

预期的字典one_groups需要是

{0: ['0000'], 
 1: ['0001', '1000'], 
 2: ['0011', '1001'], 
 3: ['0111', '1011'], 
 4: ['1111']}
Run Code Online (Sandbox Code Playgroud)

但是我明白了

{0: ['0000', '0001', '0011', '0111', '1000', '1001', '1011', '1111'], 
 1: ['0000', '0001', '0011', '0111', '1000', '1001', '1011', '1111'], 
 2: ['0000', '0001', '0011', '0111', '1000', '1001', '1011', '1111'], 
 3: …
Run Code Online (Sandbox Code Playgroud)

python dictionary

17
推荐指数
2
解决办法
1684
查看次数

从单一列表构建字典的大多数Pythonic方法

我有一个日期名称列表(通常是周一至周六,但特殊情况适用),我想创建一个字典.我想将每天的值初始化为零.

如果我有一个零列表与日期列表相同的长度,这将是一个简单的用例zip().但是,零列表是浪费空间,如果这是唯一的解决方案,我会尽快做到:

for day in weekList:
    dayDict[day] = 0
Run Code Online (Sandbox Code Playgroud)

有更多的pythonic方式吗?

python dictionary list

8
推荐指数
2
解决办法
2771
查看次数

附加到列表的dict为每个键增加了价值

我有一个空列表字典,其中包含在开头声明的所有键:

>>> keys = ["k1", "k2", "k3"]
>>> d = dict.fromkeys(keys, [])
>>> d
{'k2': [], 'k3': [], 'k1': []}
Run Code Online (Sandbox Code Playgroud)

当我尝试将一个坐标对(列表["x1", "y1"])添加到其中一个键列表时,它会添加到所有键列表中:

>>> d["k1"].append(["x1", "y1"])
>>> d
{'k1': [['x1', 'y1']], 'k2': [['x1', 'y1']], 'k3': [['x1', 'y1']]}
Run Code Online (Sandbox Code Playgroud)

我在寻找的是:

>>> d
{'k1': [['x1', 'y1']], 'k3': [], 'k1': []}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Python 3中实现这一点?

python dictionary list python-3.x

7
推荐指数
1
解决办法
1123
查看次数

创建不同列表的空白列表的字典

我正在尝试创建一个列表的字典,可以附加到for循环中.但是,如果我使用创建一个dict fromkeys,列表将成为"指针"的副本,而不是新列表.例如,

newdict = dict.fromkeys(range(10), [])

- 要么 -

newdict = dict.fromkeys(range(10), list())

两者都产生相同的数据结构,一个带有SAME列表的dict作为值对.因此,当任何键更新时,例如 - newdict[0].append(100),相应的输出print newdict是:

{0: [100], 1: [100], 2: [100], 3: [100], 4: [100], 5: [100], 6: [100], 7: [100], 8: [100], 9: [100]}

有关如何避免这种情况而不必在for循环中迭代的任何想法?提前致谢.

python dictionary copy list

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

标签 统计

python ×6

dictionary ×5

list ×4

copy ×1

python-3.x ×1