《python从入门到项目实践》第10章 字典与集合 zip() set()

目录

字典 

访问对应键的值   dictionary.items()

添加、修改、删除字典元素

字典推导式,快速生成字典

 集合

可以使用set函数创建集合

集合的添加和删除

集合的交集、并集与差集的运算(&   |   -)

列表、元组、字典、集合的对比


字典 

任意对象的无序集合 

dictionary = {'key1':'value1', 'key2':'value2', 'key3':'value3',......}

 字典里key 唯一,且不可变的

value不唯一

dictionary={}  #空字典

dictionary = dict(zip(list1,list2)) #列表创建字典

zip():将多个列表或者元组对应位置的元素组为元组,,可以用list()函数将其转为列表

name = ['邓肯','吉诺比利','帕克']        # 作为键的列表
sign = ['石佛','妖刀','跑车']            # 作为值的列表
dictionary = dict(zip(name,sign))      # 转换为字典
print(dictionary)                        # 输出转换后字典

{'邓肯': '石佛', '吉诺比利': '妖刀', '帕克': '跑车'}

 dictionary = dict(key1=value1,key2=value2,key3=value3,..... )  # 创建字典

 dictionary = dict.fromkeys(list1)   # 创建值为空的字典

 

name_list = ['邓肯','吉诺比利','帕克']       # 作为键的列表
dictionary = dict.fromkeys(name_list)
print(dictionary)

{'邓肯': None, '吉诺比利': None, '帕克': None}

元组作为键,列表作为值

name_tuple = ('邓肯','吉诺比利', '帕克')       # 作为键的元组
sign = ['石佛','妖刀' ]    # 作为值的列表
dict1 = {name_tuple:sign}                       # 创建字典
print(dict1)

{('邓肯', '吉诺比利', '帕克'): ['石佛', '妖刀']}

dict1 = {list1, list2} 会报错 

dictionary.clear() 清空字典

访问对应键的值   dictionary.items()

dictionary.get(key,[default])

default 指定键不存在返回的值,默认None

遍历字典

 dictionary.items()

 

dictionary = {'qq':'84978981','明日科技':'84978982','无语':'0431-84978981'}
for item in dictionary.items():
    print(item)

('qq', '84978981')
('明日科技', '84978982')
('无语', '0431-84978981')

 

dictionary = {'qq':'4006751066','明日科技':'0431-84978982','无语':'0431-84978981'}
for key,value in dictionary.items():
    print(key,"的联系电话是",value)

qq 的联系电话是 4006751066
明日科技 的联系电话是 0431-84978982
无语 的联系电话是 0431-84978981

添加、修改、删除字典元素

dictionary =dict((('邓肯', '石佛'),('吉诺比利','妖刀'), ('帕克','跑车')))
dictionary["罗宾逊"] = "海军上将"   # 添加一个元素
print(dictionary)

{'邓肯': '石佛', '吉诺比利': '妖刀', '帕克': '跑车', '罗宾逊': '海军上将'} #添加

dictionary =dict((('邓肯', '石佛'),('吉诺比利','妖刀'), ('帕克','跑车')))
dictionary["帕克"] = "法国跑车"   # 添加一个元素,当元素存在时,则相当于修改功能
print(dictionary)

{'邓肯': '石佛', '吉诺比利': '妖刀', '帕克': '法国跑车'}  #修改

dictionary =dict((('邓肯', '石佛'),('吉诺比利','妖刀'), ('帕克','跑车')))
del dictionary["帕克"]    # 删除一个元素
print(dictionary)

{'邓肯': '石佛', '吉诺比利': '妖刀'}        # 删除一个元素del 直接就没了

字典推导式,快速生成字典

import random                                  #导入random标准库
randomdict = {i:random.randint(10,100) for i in range(1,5)}
print("生成的字典为:",randomdict)

生成的字典为: {1: 92, 2: 53, 3: 70, 4: 84}

 集合

也是无序的

set1 = {1, 2, 3, 7, 8}  #集合

可以使用set函数创建集合

setname = set(iteration)

iteration : 表示要转化为集合的可迭代对象

如果有重复元素,只保留一个

创建空集合 只能用 set()  不能是{}  这表示空字典

集合的添加和删除

add()

setname.add(element)

 

mr = set(['零基础学Java','零基础学Android','零基础学C语言','零基础学C#','零基础学PHP'])
mr.add('零基础学Python')  # 添加一个元素
print(mr)

{'零基础学C语言', '零基础学Android', '零基础学PHP', '零基础学Python', '零基础学C#', '零基础学Java'}

 删除 remove pop clear

mr = set(['零基础学Java','零基础学Android','零基础学C语言','零基础学C#','零基础学PHP','零基础学Python'])
mr.remove('零基础学Python')                    # 移除指定元素
print('使用remove()方法移除指定元素后:',mr)
mr.pop()                                        # 删除一个元素
print('使用pop()方法移除一个元素后:',mr)
mr.clear()                                      # 清空集合
print('使用clear()方法清空集合后:',mr)

使用remove()方法移除指定元素后: {'零基础学C语言', '零基础学C#', '零基础学PHP', '零基础学Java', '零基础学Android'}
使用pop()方法移除一个元素后: {'零基础学C#', '零基础学PHP', '零基础学Java', '零基础学Android'}
使用clear()方法清空集合后: set()

remove 指定的元素不存在将抛出异常

集合的交集、并集与差集的运算(&   |   -)

pf = set(['邓肯','加内特','马龙'])       # 保存大前锋位置的球员名字
print('大前锋位置的球员有:',pf,'\n')      # 输出大前锋的球员名字
cf = set(['邓肯','奥尼尔','姚明'])       # 保存中锋位置的球员名字
print('中锋位置的球员有:', cf,'\n')      # 输出中锋的球员名字
print('交集运算:', pf & cf)      # 输出既是大前锋又是中锋的球员名字
print('并集运算:', pf | cf)     # 输出大前锋和中锋的全部球员名字
print('差集运算:', pf - cf)     # 输出是大前锋但不是中锋的球员名字

大前锋位置的球员有: {'马龙', '加内特', '邓肯'} 

中锋位置的球员有: {'邓肯', '姚明', '奥尼尔'} 

交集运算: {'邓肯'}
并集运算: {'加内特', '姚明', '奥尼尔', '马龙', '邓肯'}
差集运算: {'马龙', '加内特'}

列表、元组、字典、集合的对比

数据结构是否可变是否重复是否有序定义符号
列表可变可重复有序[ ]
元组不可变可重复有序( )
字典可变可重复无序{key:value}
集合可变不可重复无序{ }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值