python学习笔记17_元组及字典简单介绍

python 笔记17

1.元组 tuple

元组被称为只读列表,即数据可以被查询,但不能被修改,所以,列表的切片操作同样适用于元组,元组写在小括号()里面,元素之间用逗号隔开。
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
构造包含0个或1个元素的元组比较特殊,所有一些额外的语法规则:

tup1 = ()     #空元组
tup2 = (20,)  #一个元素,需要在元素后添加逗号

作用:
1.对于一些数据我们不想被修改,可以使用元组
2.另外,元组的意义还在于,元组可以映射(和集合的成员)中当做键使用——而列表则不行;元组作为很多内建函数和方法的返回值存在。

关于可读:

a = (1,2,3,4)
print(a[1])
a[1] = 5
print(a)

输出: 错误!

这里a是一个元组,元组列表是只读的,所以不能被修改。


2.嵌套

a = [[1,2,4],'Alex',4,(2,3,4)]
b = a[0]
print (b)

输出: [1,2,4]

上面是列表中放元素、列表、元组。
如果要输出a中第一个列表中的那个2呢?

a = [[1,2,4],'Alex',4,(2,3,4)]
b = a[0][1]      # 找不同级列表的元素
print (b)

输出: 2

3.字典

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

不可变类型:整形、字符串、元组
可变类型: 列表、字典

字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典的两个特点: 无序、键唯一

创建字典:

dic={'name':'flamingo','age':'23','hobby':'girl'}
print(dic[name])

输出: flamingo

另一种创建字典的方法:

dic = dict((('name','flamingo'),('age','23'),))
print(dic)

输出: {'name': 'flamingo', 'age': '23'}

但是,字典里面的键不能放可变类型:

dic = {[1,2,3],'name':'flamingo'}

报错: 不支持的哈希类型,就是因为列表是可变类型。

放不可变类型:

dic={'name':'alex','age':'35','hobby':{'girl_name':'铁锤','age':35}}dic1 = {'name': 'alex', 'age': 36, 'sex': 'male'}

则不会报错。

3.1 字典·增

dic1 = {'name':'flamingo'}
dic1['age'] = 18 
print(dic1)

输出: {'name': 'flamingo', 'age': 18}

dic1.setdefault('age',34)

1.如果能找个age这个键,则不修改age的值;如果没有age这个值,就添加age:34.
2 .setdefault 有返回值:

dic1 = {'age': '18'}
ret = dic1.setdefault('age',34)
print (ret)

输出: 18

3.2字典·查

dic1 = {'name': 'flamingo', 'age': 23, 'sex': 'male'}
print(dic1[name])

输出: flamingo

如果不知道里面有什么键,可以这么查:

dic1 = {'name': 'alex', 'age': 36, 'sex': 'male'}
print(dic1.keys())
print(dic1.values())
print(dic1.item())

输出:
dict_keys(['name', 'age', 'sex'])
dict_values(['alex', 36, 'male'])
dict_items([('name', 'alex'), ('age', 36), ('sex', 'male')])

上面输出的结果有dict_keys() 、dict_values()和dict_items()这些固定的词组,
如果我们想让它输出成列表的形式,可以加* list()

dic1 = {'name': 'alex', 'age': 36, 'sex': 'male'}
print(list(dic1.keys()))
print(list(dic1.values()))
print(list(dic1.item()))

输出:
['name', 'age', 'sex']
['alex', 36, 'male']
[('name', 'alex'), ('age', 36), ('sex', 'male')]

3.3 字典·改

dic1 = {'name': 'flamingo', 'age': 36, 'sex': 'male'}
dic1['age'] = 23    #类似列表,但列表[]中写的是位置,而字典中是键的名称
print(dic1)

输出: 
{'name': 'alex', 'age': 23, 'sex': 'male'}

类似列表中的.extent,字典的叠加方式为:

dic4 = {'age':23,'name':'flamingo','hobby':'python'}
dic5 = {'age':'18','job':'studengt'}
dic4.update(dic5)
print(dic4)

输出:
{'age': '18', 'name': 'flamingo', 'hobby': 'python', 'job': 'studengt'}

可见,dic4.update(dic5) ,是把dic4中原来存在的键的值用dic5中的替换了,而如果dic4中没有的则直接加上去。

3.4 字典·删

dic1 = {'name': 'flamingo', 'age': 36, 'sex': 'male'}
del dic1['name']  #删除了name键值对
dic1.clear()      #清空列表
dic1.pop('age')   #删除并返回一个值,36
dic1.popitem()    #随机删除某组键值对,并以元组方式返回

3.5 字典·其他操作·赋同一个值

给所有的键给同一个值:(或同一个列表)

dic6 = dict.fromkeys(['host1','host2','host3'],'test')
print(dic6)
输出:
{'host1': 'test', 'host2': 'test', 'host3': 'test'}

3.6 字典·嵌套

3.7 字典·sorted(dict)

sorted(dict) : 返回一个有序的包含字典所有key的列表

dic = {'5':'555','2':'222','4':'444'}
print(sorted(dic))
print(sorted(dic.items()))
print(sorted(dic.values()))

输出:
['2', '4', '5']
[('2', '222'), ('4', '444'), ('5', '555')]
['222', '444', '555']

3.8 字典遍历

方式一: (推荐,效率高)

dic1 = {'name': 'flamingo', 'age': 36, 'sex': 'male'}
for i in dic1:
    print(i,dic1[i])

输出:
    name flamingo
    age 36
    sex male

方式二: (不推荐,多了一个转换的过程,效率不高)

dic1 = {'name': 'flamingo', 'age': 36, 'sex': 'male'}
for i,v in dic1.items():
    print(i,v)
    
输出:
    name flamingo
    age 36
    sex male

你可能感兴趣的:(python学习笔记17_元组及字典简单介绍)