字典dict由键值key-value构成,具有较强的查询检索能力。

     基本格式为:

dict={key1:value1,key2:value2,......,keyn,valuen }

    1.key由数字、字符串、元组(元素只能为数字或字符串)这三种类型进行构建,但不能用变量、list、tuple进行构建。为什么呢,最后解释。

     2.value可以是数字、字符串、元组、已赋值的变量、列表list、集合tuple。


     为深入了解字典dict前,我们有必要和list对比一下。以下面C_lists和字典D_lists为例:

Python中最大连续数组 python数组最大长度_Python中最大连续数组

    我们可以看出:

    1. C_lists一旦定义,其长度就固定下来了,不能再增加。C_lists[0]到C_lists[2]有效,而C_lists[3]超界。

    2. D_lists定义之后,如果按照key的构建规则继续向D_lists[]里增加key,其数量是可以继续增加的。

    3. C_lists是以0开始的有序数列进行读取的,而D_lists是以key对应的value进行读取的。如D_lists['li']的value为15,而字典元素为tuple或list时,其读取规则同元组读取规则是一样的,如D_lists['wang'][1][1]=4。

    4. 当dict中key出现重复时,key最终的value以最后一次赋值(出现)为准,并按照第一次key出现的位置输出。

以下代码在Pycharm下测试通过,可对照输出结果进行理解。

     

#以下开始定义字典,并进行赋值
      D_lists={'zhang':('ee',[2,4,5],99999),'li':1000000,'zhang':('ee',[2,4,500],3)}
      D_lists['li']=12
      D_lists['zhang'][1][1]=77777
      D_lists[3]=1
      D_lists[('2wwww','w',45)]=2
      if 'li' in D_lists:
         print(D_lists)
      D_lists['zhang']= 1
      print(D_lists)

结果输出:

{'zhang': ('ee', [2, 77777, 500], 3), 'li': 12, 3: 1, ('2wwww', 'w', 45): 2}

{'zhang': 1, 'li': 12, 3: 1, ('2wwww', 'w', 45): 2}

    现在,我们回过头来回答前面留下的问题,其实就是解释dict中key到时是干什么的:

    1. key在功能上是用于检索的,相当于list中的0,1,2,3...等索引。

    2. key还可被用来生成内存地址。Python系统会依次对出现的key,以调用Hash哈希函数的方法,转换成有序而不连续的内存地址,并把对应的value放置在此。这就很好理解上面我们看出的第4条内容。

    3. Hash哈希函数不能使用变量做其参数生成内存地址。 list、dict以及变量都是可变的,因此,就不能用作参数。如果元组tuple元素仅使用数字或字符串的话,不变的,这时是可以用作key的。但tuple一旦内含了list等变化元素就不可以了。

   由于北京疫情,现在不敢在KFC店里喝咖啡了,店外用手机先点,之后取走,露天喝!