一、元祖

       Tuole(元祖)与列表类似,不同之处在于元祖的元素不能修改。元祖表示多个元素组成的序列,元祖在python开发中,有特定的应用场景。用于储存一串信息,数据之间的使用‘,’分隔,元祖用()定义,元祖的索引从0开始,索引就是数据在元祖中的位置编号。

二、字典

       字典是唯一的内置映射类型,可以看做是Python中的散列表或关联数组。字典可以用来存储多个数据。首先表示字典是{字典大括号},列表[列表中括号],元祖(元祖小括号),字典一般是键值对,键的话就是key,值的话就是内容。键和值中间需要“:”,键值对和键值对之间需要“,”,进行分割。

       字典数据的添加和查询过程如下:1)添加:把key通过散列函数转换成一个整型数字(即散列值),把这个值最低的几位数字当作数组存储value的下标,最后再存储value到数组中;2)查询:使用散列函数将key转换为数组的下标,并定位到数组对应位置获取value。

1、keys()、 values()和 items()字典的方法
      这三个字典方法分别对应于字典的键、值和键-值对,这些方法返回的值不是真正的列表,它们不能被修改,没有append()方法。但这些数据类型(分别是 dict_keys、 dict_values 和 dict_items)可以用于for 循环。利用 keys()、 values()和 items()方法,for循环分别可以迭代键、值或键-值对。items()方法返回的 dict_items 值中,包含的是键和值的元组。如果希望通过这些方法得到一个真正的列表,就把类似列表的返回值传递给 list函数。

>>> studentinfo={'name':'zhangsan','age':'21','studentid':'20200101'}
>>> studentinfo.keys()
dict_keys(['studengid', 'age', 'name'])
>>> list(studentinfo.keys())
['studengid', 'age', 'name']

也可以利用多重赋值的技巧,在 for 循环中将键和值赋给不同的变量。

>>> studentinfo={'name':'zhangsan','age':'21','studentid':'20200101'}
>>> for k,v in studentinfo.items():
	print('key: '+k+' value: '+str(v))

	
key: studengid value: 20200101
key: age value: 21
key: name value: zhangsan

2、in 和 not in 操作符检查值是否存在于字典
 可以利用in 和 not in 操作符,检查某个键或值是否存在于字典中

>>> 'studentid' in studentinfo.keys()
True

三、元祖,字典以及列表的区别

       元组与列表的主要区别还在于,元组像字符串一样, 是不可变的。 元组不能让它们的值被修改、 添加或删除。如果元组中只有一个值, 你可以在括号内该值的后面跟上一个逗号, 表明这种情况。 否则, Python 将认为, 你只是在一个普通括号内输入了一个值。逗号告诉Python, 这是一个元组(不像其他编程语言, Python 接受列表或元组中最后表项后面跟的逗号)。

>>> name=('zhangsan','lisi','wangwu','zhaoliu')
>>> name.append('sunqi')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    name.append('sunqi')
AttributeError: 'tuple' object has no attribute 'append'
>>>

元祖增加元素报错。

>>> name1=['zhangsan','lisi','wangwu','zhaoliu']
>>> name1.append('sunqi')    #添加元素
>>> name1
['zhangsan', 'lisi', 'wangwu', 'zhaoliu', 'sunqi']
>>>

列表添加元素成功

不像列表,字典中的表项是不排序的。因为字典是不排序的,所以不能像列表那样切片。尝试访问字典中不存在的键, 将导致KeyError 出错信息。这很像列表的“ 越界”IndexError 出错信息。
 

>>> studentinfo={'name':'zhangsan','age':'21','studentid':'20200101'}
>>> studentinfo['age']
'21'
>>> studenginfo['school']   #school的key不存在故报错
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    studenginfo['school']
NameError: name 'studenginfo' is not defined