第二章—数据类型(元组、字典、集合)

元组:元组是由一对括号和以逗号分隔的值组成。

存储一组数据,没有一旦创建,不能修改又称只读列表。

特性:

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]}

猜你喜欢

转载自www.cnblogs.com/james201133002/p/9081164.html