马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么两种定义方式定义的字典,相同的操作,得到不同的结果? 怎么解决
Ⅰ:
- >>>a = dict.fromkeys((1,2,3,4,5), [0,0])
- >>> a
- {1: [0, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0], 5: [0, 0]}
- >>> a[1][1] += 1
- >>> a
- {1: [0, 1], 2: [0, 1], 3: [0, 1], 4: [0, 1], 5: [0, 1]}
复制代码
Ⅱ:
- >>>c = {1: [0, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0], 5: [0, 0]}
- >>> c
- {1: [0, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0], 5: [0, 0]}
- >>> c[1][1] += 1
- >>> c
- {1: [0, 1], 2: [0, 0], 3: [0, 0], 4: [0, 0], 5: [0, 0]}
复制代码 [/code]
第一个[0,0]都是一个内存区域
尝试用推导式
- >>> a={x:[0,0] for x in (1,2,3,4,5)}
- >>> a
- {1: [0, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0], 5: [0, 0]}
- >>> a[1][0]=2
- >>> a
- {1: [2, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0], 5: [0, 0]}
- >>>
复制代码
|