目录
字典
任意对象的无序集合
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} |
集合 | 可变 | 不可重复 | 无序 | { } |