2018-04-25

字典类型创建空数组

我的目的是想,在一个字典中创建一个有序key 键,然后用哈希映射,在每个key键后面是一个list数组。像这样:{0:[3,6,9],1:[4,7,10],...},由于key 键值较多,所以我想用fromkeys来初始化n个空list。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

dict1={}

dict1=dict1.fromkeys(range(2),[])

print dict1


输出:{0: [], 1: []}

OK,下一步,往list中添加元素。

dict1[0].append(2)

print dict1

输出:{0: [2], 1: [2]}

??我不是只对key键为0的list添加的吗?为啥key键为1的也有?

然后,我又测试了一段代码:

dic = {0: [],1:[]}

print dic

dic[0].append(1)

print dic

输出:{0: [], 1: []}

{0: [1], 1: []}

可以了?但是我不能手动一个一个输入,因为我要的量比较大。所以我就把字典换成了list。

代码:list1=[[]for iin xrange(3)]

print list1

list1[0].append(3)

print list1

输出:[[], [], []]

[[3], [], []]


后来查资料,发现原因是这样的:

def fromkeys(*args, **kwargs):  # 将所有key都赋予相同的值,第一参数为key,第二个

                                        参数为value,如果没有第二个参数则默认为none;

    噢! 那么说将列表赋值给第一个参数key值,那是怎么赋值的呢? 我们来看下面一个例子:

代码:dict1={}

dict1=dict1.fromkeys(range(2),[])

print dict1

print id(dict1[0])

print id(dict1[1])

结果:{0: [], 1: []}

36286024

36286024

原来字典中的key同时指向了一个列表。那我要是非要把字典中每个key定义不同的列表呢?那只能这样了:

test = {}

for i in range(10):

     test[i] = []

暂时想到这些,有好的建议,希望留言。谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Python的hello-world: print ("Hello, Python!")、 完了 摇就完事儿...
    LunarShade阅读 1,508评论 0 0
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,951评论 0 3
  • 1 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubun...
    繁星丶落幕阅读 257评论 0 2
  • With theadvancement of information technology and the wid...
    yhdv阅读 372评论 0 0
  • Day 16:6km跑步第16天,今天跑步的时候思绪有点儿多。有些场景让我生了些感触。 跑步的时候路过...
    Linda玲_500f阅读 116评论 0 0