学习笔记☞python 基础☞字典(python3)

字典 dict

什么是字典
    字典是一种可变的容器,可以存储任意类型的数据
    字典中的每一个数据都是用'键'进行索引的,而不像序列可以用下表(index)来进行索引
    字典中的数据没有先后顺序关系,字典的存储是无序的
    字典中的数据以键(key)-值(value)对的形式进行映射存储
    字典的键不能重复,且只能用'不可变类型'作为字典的键
字典的字面值表示方式:
    字典的表示方式以{}括起来,以冒号(:)分割键~值对,各键~值对之间用逗号分隔开
创建空字典:
d = {}    # d 绑定空字典
创建非空字典:
d = {'name': 'tarena', 'age': 16}
d = {'yeat': 2018, 'month': 4, 'day':1}  
字典的构造函数 dict
    dict()        生成一个空字典,等同于{}
    dict(iterable)        用可迭代对象初始化一个字典
    dict(**kwargs)        用命名关键字传参形式生成一个字典
示例:
d = dict()
d = dict([('name', 'tarena'), ('age', 15)])
d = dict(name = tarena, age = 15)                     #关键字参数创建字典
字典的键为不可变类型:
    bool, int, float, complex, str, tuple, frozenset(固定集合), bytes(字节串),
    包括:None
可变的类型(不可充当字典的键)
    list, dict, set(集合), bytearray(字节数组)
字典的基本操作:
    键索引:
        语法:
            字典[键]
示例:
>>> d = {'name': 'tarena', 'age': 15}
>>> d['name']
'tarena
>>> d['age']
15        
添加和修改字典
    字典[键] = 值对象
示例:
d = {}
d['birthday'] = (2002, 1, 1)    #添加键值对
d['age'] = 16                    #添加
d['age'] = 17                    #修改'age'键所对应的值        
删除字典元素 del 语句
    语法:
        del 字典[键]
示例:
>>> d = {'name': 'tarena', 'age': 15}
>>> del d['age']    #删除'age'这个键
>>> d
{'name': 'tarena'}
字典的成员资格判断in / not in 运算符
    用in  运算符可以判断一个键是否存在于字典中,如果存在则返回True,否则返回False
    not in 返回值与 in 相反
示例:
d = {1:'一', 2:'二'}
1 in d 		#True
2 in d 		#True
2 not in d 	#False
8 not in d 	#True
8 in d 		#False
'一' in d 	#False
列表的in 运算符与字典的in 运算符比较:
    1、列表的in运算符计算时间会因列表中元素个数增加而增加
 L=[3,7,0,1,2,85,1,…… 109465]    #大约10万个元素
if 888 in L:
    print('888在列表中')    #慢      
    2、字面的in 运算符计算时间不会因键值对的个数增加而增加,操作速度快于列表
d={3: None, 7: 'xx',0: None,…… 109465:None}
if 888 in d:
    print('888在字典的键里')    #快
可以用于字典的内建(built-in)函数:
    len(x)        返回字典的键值对个数
    max(x)        返回字典的键的最大值
    min(x)        返回字典的键的最小值
    sum(x)        返回字典的所有键的和
    any(x)        对所有键进行真值测试,有一个为True,结果为True
    all(x)        对所有键进行真值测试,所有为True结果为True
字典的方法:
函数说明
D代表字典对象 
D.clear()清空字典
D.pop(key)移除键,同时返回此键所对应的值
D.copy()返回字典D的副本,只复制一层(浅拷贝)
D.update(D2)将字典 D2 合并到D中,如果键相同,则此键的值取D2的值作为新值
D.get(key, default)返回键key所对应的值,如果没有此键,则返回default
  
D.keys()返回可迭代的 dict_keys 集合对象
D.values()返回可迭代的 dict_values 值对象
D.items()返回可迭代的 dict_items 对象
练习:
#! /usr/bin/python3
'''
输入一个字符串代表星期几(0-6),'0'/'周日'代表周日,'1'/'一'代表周一,……,'6'/'六'代表周六
任意输入字符串,打印代表这个字符串代表星期几,如果不是以上字符打印'字典内没有相应数据'
要求将以上数据存于字典中,键为字符串:'0123456日一……六'值为星期几或周几
'''
d = {
    '0': '星期日', '日': '星期日', '1': '星期一', '一': '星期一',
    '2': '星期二', '二': '星期二', '3': '星期三', '三': '星期三',
    '4': '星期四', '四': '星期四', '5': '星期五', '五': '星期五',
    '6': '星期六', '六': '星期六'
    }
while True:
    s = input('输入字符串')
    if not s:
        break
    if s in d:
        print(d[s])
    else:
        print('字典内没有相应数据')
字典推导式:
    作用:
        用可迭代对象生成字典
    语法:
        {键表达式:值表达式 for 变量 in 可迭代对象 [if 真值表达式]}
        注:[]的内容代表可以省略

示例:

#! /usr/bin/python3
'''
有字符串列表如下:
    L=['tarena','xiaozhang','hello']
用推到式生成如下字典:
    d={'tarena':6,'xiaozhang':9,'hello':5}
    注:字典的值为键的长度
'''

L = ['tarena', 'xiaozhang', 'hello']
d = {k: len(k) for k in L}
print(d)
-------------------------------------------------------------------------------------------------------------------------------
#! /usr/bin/python3
'''
2、有两个列表:
no=[1001,1002,1003,1004]
names=['Tom','Jerry','Spike','Tyke']
用no中的编码作为键,以names中的字符串为值,生成相应的字典
'''

no = [1001, 1002, 1003, 1004]
names = ['Tom', 'Jerry', 'Spike', 'Tyke']
d = {no[i]: names[i] for i in range(len(no))}
print(d)
字典推导式的嵌套
    语法同列表推导式嵌套
        {键表达式:值表达式
            for 变量1 in 可迭代对象1 [if 真值表达式1]}
                for 变量2 in 可迭代对象2 [if 真值表达式2]}}

字典 VS 列表

    1、都是可变对象
    2、索引方式不同,列表用整数索引,字典用键索引
    3、字典的查找速度可能会快于列表(重要)
    4、列表的存储是有序的,字典的存储是无序的
       
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值