第二章—数据类型(元组字典集合)
Posted james201133002
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章—数据类型(元组字典集合)相关的知识,希望对你有一定的参考价值。
元组:元组是由一对括号和以逗号分隔的值组成。
存储一组数据,没有一旦创建,不能修改又称只读列表。
特性:
1.不可变
2.元组本身不可变,如果元组内还有其他可变的元素,这些可变元素是可以改变的。
创建:
>>> tup = () >>> tup () 当元组只有一个元素时,需要在元素后面加‘ , ‘。否则会被默认时变量赋值 >>> tup = (‘a‘) >>> tup ‘a‘ >>> tup = (‘a‘,) >>> tup (‘a‘,)
索引和切片
>>> tup = (1,2,3,‘a‘,‘b‘,‘c‘) >>> tup.index("a") 3 >>> tup[1:4] (2, 3, ‘a‘)
计数
>>> tup = (1,2,3,‘a‘,‘b‘,‘c‘) >>> tup.count(‘a‘) 1
元组的循环:
>>> for i in tup: print(i) 1 2 3 a b c >>> for index,i in enumerate(tup): print(index,i) 0 1 1 2 2 3 3 a 4 b 5 c
字典dict
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组、布尔值。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
特性:
1.key-value结构,存储大量关系型数据。
2.key必须唯一,必须可哈希,也就是不可变类型
3.可存放任意多个值,value可以不唯一,可以修改
4.字典是无序的
5.查找速度特别快
创建
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> dic1 {‘name‘: ‘james‘, ‘age‘: 18, ‘sex‘: ‘male‘}
增加
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> dic1[‘high‘] = 175 # 不存在key = ‘high‘才新增,如果存在就是覆盖 >>> dic1 {‘name‘: ‘james‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘high‘: 175}
dic1.setdefalut(key,value)字典中存在key,不做任何改变,不存在就新增,value不指定时默认为None
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic1.setdefault("name",‘JAMES‘) # 字典中存在key为‘name‘的键值对,直接返回key对应的值,字典没有改变
‘james‘
>>> dic1
{‘name‘: ‘james‘, ‘age‘: 18, ‘sex‘: ‘male‘}
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic1.setdefault(‘weight‘,130) # 字典中不存在key = ‘weight‘,就新增进去,返回value
130
>>> dic1
{‘name‘: ‘james‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘weight‘: 130}
删除
dic1.pop(key,x)
指定key值删除,如果key存在,返回key对应的value,x缺失的情况下,key不存在会报错
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> dic1.pop(‘age‘) # 不指定x,key存在返回key的value 18 >>> dic1 {‘name‘: ‘james‘, ‘sex‘: ‘male‘}
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic1.pop("high") # 不指定x,key不存在报错
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
dic1.pop("high")
KeyError: ‘high‘
如果指定了x,key不存在时,直接返回x;如果指定x,key存在就直接返回key对应的value(可设置返回值x)
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic1.pop("high",178)
178
dic1.popitem() # 随机删除,有返回值,返回以元组形式的键值。
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic1.popitem()
(‘sex‘, ‘male‘)
del dic1.[key] # 按照指定的key删除键值,没有返回值,如果key不存在会报错
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> del dic1.[‘heigh‘]
SyntaxError: invalid syntax
del dic1 # 直接删除字典
dic1.clear() #清空列表
修改
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> dic1[‘name‘] = ‘JAMES‘ # 直接对指定的key值对应的value进行赋值修改 >>> dic1 {‘name‘: ‘JAMES‘, ‘age‘: 18, ‘sex‘: ‘male‘}
dic1.update(dic2) # 更新
把dic2的键值对更新到dic1中,相同key值的,覆盖掉dic1中的value,dic1中的没有的key,新增进去
dic1法生改变,dic2不发生改变
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic2 = {‘name‘:‘tony‘,‘heigh‘:178}
>>> dic1.update(dic2)
>>> dic1
{‘name‘: ‘tony‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘heigh‘: 178}
>>> dic2
{‘name‘: ‘tony‘, ‘heigh‘: 178}
查询
dic1[key] 按照指定的key,找出对应的value,如果key不存在,会报错
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic1[‘name‘]
‘james‘
dic1.get(key,x) 查找对应键的值,可设置返回值,x默认是None
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic1.get(‘name‘) # 如果存在返回对应的value
‘james‘
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘}
>>> dic1.get(‘heigh‘,‘不存在‘) # 如果key不存在,返回x指定的值,x为空默认返回None
‘不存在‘
dic1.keys() 返回字典里面的全部key,以列表的形式返回
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> dic1.keys() dict_keys([‘name‘, ‘age‘, ‘sex‘])
dic1.values() 返回字典里面的全部value,以列表的形式返回
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> dic1.values() dict_values([‘james‘, 18, ‘male‘]) dic1.items() 把字典的键和值放进元组,以列表的形式返回 >>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> dic1.items() dict_items([(‘name‘, ‘james‘), (‘age‘, 18), (‘sex‘, ‘male‘)])
循环
>>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> for i in dic1: # 打印的是key print(i) name age sex >>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> for i in dic1.keys(): # 打印的是key print(i) name age sex >>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> for i in dic1.values(): # 打印的是values print(i) james 18 male >>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> for k,v in dic1.items(): # 打印的是key 和 value (这个方法低效,是先把字典转成列表再循环打印) print(k,v) name james age 18 sex male >>> dic1 = {‘name‘:‘james‘, ‘age‘:18, ‘sex‘:‘male‘} >>> for i in dic1: print(i,dic1[i]) # 直接用dic1[i]取出value值 name james age 18 sex male
字典的其他方法
fromkeys
dict.fromkeys(seq[, value]) # 以seq为字典的key,value为键对应的值创建字典
seq可以是元组或者列表
value也可以是元组或者列表
>>> {}.fromkeys((1,2,3),(10,1))
{1: (10, 1), 2: (10, 1), 3: (10, 1)}
>>> {}.fromkeys((1,2,3),[10,1])
{1: [10, 1], 2: [10, 1], 3: [10, 1]}
>>> {}.fromkeys([1,2,3],10)
{1: 10, 2: 10, 3: 10}
>>> {}.fromkeys([1,2,3],[10,1])
{1: [10, 1], 2: [10, 1], 3: [10, 1]}
以上是关于第二章—数据类型(元组字典集合)的主要内容,如果未能解决你的问题,请参考以下文章
Python基础数据结构:列表 | 元组 | 集合 | 字典
Python基础数据结构:列表 | 元组 | 集合 | 字典