字典的创建

直接创建字典:用户可以通过直接定义字典的方式来创建字典。

dict = {"one":1,"two":2,"three":3}

此方法多用于当键值对较少时 或者 键和值不存在于列表,元组中的时候使用。(字典其实是两个序列之间的映射。假设有两个列表:list1和list2。list1和list2中都有两个元素,通过某种方法可以让list1中的第一个元素和list2中的第一个元素对应,list1中的第二个元素和list2中的第二个元素相对应。这种方法在下面 间接创建字典 中会讲到。)

 间接创建字典:

         间接创建字典是利用字典是由序列经过映射形成的特性产生的。(在本篇中序列指的是列表和元组)

        (一)dict()函数与zip()函数

                dict()函数与zip()函数经常搭配起来,用来实现 序列与序列之间的映射 和 形成字典 两个步骤。

                序列与序列间的映射dict()函数:

                               list1=["one","two","three"]

                               list2=[   1   ,    2   ,    3    ](此处加空格是为了方便观看 ,  list2实际上是[1,2,3])

                               将列表1映射到列表2上,可以这样表示("one",1),("two",2),("three",3)。

                               其实这样表示的原因不难理解。函数坐标的表示其实就是一种映射,将自变量映射到因变量上。我们假设列                                  表1是自变量,列表而是因变量。经过映射后产生坐标("one",1),("two",2),("three",3)。

                                在这个例子中列表中只有三个元素,我们手动映射也是行的通的。但如果列表中有成千上万个元素该怎么办

                                呢?zip()函数来帮忙。

                                 zip()函数用于将可迭代对象作为参数,将对象中的元素打包成一个个元组,然后返回这些元组组成的列表[1]

                               

                                 举个例子:   

list1 = ["one","two","three"]
list2 = [1,2,3]
zipped = zip(list1,list2)

                                 在python2中zip()函数返回的是一个列表,可以被print()函数打印出来。

#python2中
print(zipped)


[("one",1),("two",2),("three",3)] #程序运行完后

                                 在python3中zip()函数返回的是一个zip对象,不能被打印出来。

#python3中
print(zipped)


<zip object at 0x00000221047ADF08> #打印出来的结果 zip object 表示zip对象
                                   #0x00000221047ADF08 表示该对象所在的位置

 

其实可以把zipped理解为(("one",1),("two",2),("three",3)),所以zip()函数是一个将两个序列映射后再打包的的过程(最外面的一层括号理解为打包,里面的括号是映射)。

(("one",1),("two",2),("three",3))无论从格式上还是从概念上都很像是一个元组,但由于它是由zip()函数所形成的,它的属性已经被zip()函数所规定(实际上是被zip()函数的作者所定)。通过dir()函数可以看到这个对象的属性。

print(dir(zipped))



['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
#从返回的结果中我们可以看到zipped其实是一个可迭代对象,他没有可打印的属性

                形成字典dict()函数:经过zip()函数处理过的序列可以直接投给dict()函数用于形成字典。

list1 = ["one","two","three"]
list2 = [1,2,3]
zipped = zip(list1,list2)
dict1 = dict(zipped)
print(dict1)

{'one': 1, 'two': 2, 'three': 3} #最后打印出来的结果

                 

[1] 菜鸟教程 http://www.runoob.com/python/python-func-zip.html

                

 

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值