美文网首页
2018-04-25

2018-04-25

作者: coo1wind | 来源:发表于2018-04-26 12:18 被阅读0次

    字典类型创建空数组

    我的目的是想,在一个字典中创建一个有序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] = []

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

    相关文章

      网友评论

          本文标题:2018-04-25

          本文链接:https://www.haomeiwen.com/subject/kieulftx.html