ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

字典、元组与集合的内置方法

2021-06-03 18:34:30  阅读:158  来源: 互联网

标签:username 内置 jason 元组 123 print hobby d1 字典


利用列表实现队列与堆栈的特征

队列
先进先出
堆栈
先进后出

队列
l = []
添加元素
l.append(111)  # l = [111,]
l.append(222)  # l = [111, 222]
l.append(333)  # l = [111, 222, 333]
# 取出元素
print(l.pop(0))  # 111 l = [222, 333]
print(l.pop(0))  # 222 l = [333,]
print(l.pop(0))  # 333 l = []


堆栈
l = []
# 添加元素
l.append(111)  # l = [111,]
l.append(222)  # l = [111, 222]
l.append(333)  # l = [111, 222, 333]
# 取值
print(l.pop())  # 333 l = [111, 222]
print(l.pop())  # 222 l = [111,]
print(l.pop())  # 111 l = []

 

字典内置方法

大括号括起来 内部可以存放多个元素
元素的表现形式是以K:V键值对形式
K是对V的描述性信息 一般都是字符串 K是不可变类型(整型 浮点型 字符串)
k值只要是不可变类型即可 同一个字典内可以混用
V可以是任意类型

作用:存多个值,key:value存取,取值速度快

优先掌握的操作
1.按key存取值:可存可取
d1 = {
   'username':'jason',
   'password':123,
   'hobby':['read', 'run']
}
print(d1['username'])  # jason
d1['username'] = 'tony'
print(d1)  # {'username': 'tony', 'password': 123, 'hobby': ['read', 'run']}
# 字典是可变类型
print(d1['age'])  # 键不存在 直接报错
d1['age'] = 18  # 键存在则修改 不存在则新建
print(d1)  # {'username': 'jason', 'password': 123, 'hobby': ['read', 'run'], 'age': 18}


2.长度len 统计字典中键值对的个数
print(len(d1))  # 3


3.成员运算in和not in
print('jason' in d1)  # False 字典默认只暴露key value不暴露 如果想取 一般只能通过key
print('username' in d1)  # True


4.删除
通用删除关键字
del d1['password']
print(d1)  # {'username': 'jason', 'hobby': ['read', 'run']}
'''字典不能使用索引!!!'''
弹出
res = d1.pop('password')
print(d1)  # {'username': 'jason', 'hobby': ['read', 'run']}
print(res)  # 123


5.键keys(),值values(),键值对items()
将keys()的结果可以直接看成是列表
print(d1.keys())  # 获取字典中所有的key   dict_keys(['username', 'password', 'hobby'])
keys()在python3与python2中有所不同
python3:需要时才给你,不需要时不给
python2:直接生成列表
"""
python2与python3对比
  python3
      keys() dict_keys(['username', 'password', 'hobby']) 老母猪
  python2
      keys() ['username', 'password', 'hobby']
"""

将values()的结果可以直接看成是列表
print(d1.values())  # dict_values(['jason', 123, ['read', 'run']])
values()在python2与python3中的区别等同于keys()

将items()的结果可以直接看成是列表[]套小列表()
print(d1.items())
for k,v in d1.items():  # 解压赋值 结合 for循环
print(k,v)  # dict_items([('username', 'jason'), ('password', 123), ('hobby', ['read', 'run'])])
   
6.循环
字典for循环只能获取到key
for i in d1:
   print(i)

7.字典的get取值
dict.get()  # 使用频率最为广泛   通过字典的key获取字典的value
print(d1.get('username'))  # jason 取出value
print(d1.get('age'))  # None 当k键不存在时,不报错,返回None
print(d1.get('username','嘿嘿嘿'))  # jason
print(d1.get('age','嘿嘿嘿'))  # 嘿嘿嘿
get方法还可以给第二个参数  键存在则不使用 键不存在则返回第二个参数  不写默认返回None

8.创建字典
第一种创建字典的方式
d2 = {'k1':'v1','k2':'v2'}  # dict({'k1':'v1','k2':'v2'})

第二种创建方式
res = dict(name='jason',pwd=123,hobby=['read','run'])
print(res)  # {'name': 'jason', 'pwd': 123, 'hobby': ['read', 'run']}

第三种创建方式
l = [
  ['username','jason'],
  ['password',123],
  ['hobby',['read','run']]
]
d = {}
for i in l:  # ['username','jason']     ['password',123]   ['hobby',['read','run']]
   d[i[0]] = i[1]  # d['username'] = 'jason'
print(d)

d = {}
for k,v in l:  # ['username','jason']     ['password',123]   ['hobby',['read','run']]
   d[k] = v
print(d)
res = dict(l)
print(res)  # {'username': 'jason', 'password': 123, 'hobby': ['read', 'run']}


9.清空
dict.clear()  清空


10.快速生成一个字典
dict.fromkeys()  快速先生成一个字典
l = ['username','pwd','hobby']
res = dict.fromkeys(l,None)  # 字典有key,但value为None,也可不为None,之后再修改
print(res)


11.弹出
dict.popitem()
res = d1.popitem()  # 随机弹出一组键值对


12.setdefault
dict.setdefault()  重点
dd = {'name':'jason','pwd':123}
dd.setdefault('age',18)  # 键不存在 则新建
res = dd.setdefault('name','egonSBSBSB')  # 键存在不修改 而是获取到键对应的值
print(dd,res)  # {'name': 'jason', 'pwd': 123, 'age': 18} jason


13.update
dict.update()
dd = {'name':'jason','pwd':123}
dd.update({'age':18})  # 键不存在 则新建
dd.update({'name':'EGONDSB'})  # 键存在则修改
print(dd)

 

元组及元组内置方法

1.定义
小括号括起来 括号内可以存放多个元素,元素与元素之间逗号隔开,元素可以是任意类型
   元组也可以简单的理解为是列表(元组属于不可变类型)
2.类型转换
与list一致 支持for循环的都可以
   当元组内部只有一个元素的时候,逗号不能省略,不然类型就不是元组了
以后只要是容器类型 无论内部有几个元素 都必须要有逗号,尤其是只有一个元素的情况下
3.作用
存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读

优先掌握的操作
1.索引取值
正向取+反向取 只能取不能改
笔试题:
t2 = (11,22,[11,22])
t2[2].append(33)
问:上述代码执行的结果是什么
答:可以运行,不会报错,此时t2 = (11, 22, [11, 22, 33])
元组内元素的内存地址不能修改
   但是如果元素是可变类型 那么元素值可以改


2.切片
与字符串 列表一致

   
3.长度
与字符串 列表一致
   
   
4.成员运算in和not in
与字符串 列表一致
   
   
5.循环
for i in (11,22,33):
   print(i)

 

集合及集合内置方法

定义
大括号括起来,内部可以存放多个元素,元素与元素之间逗号隔开(不是k:v键值对),元素只能是不可变类型(整型 浮点型 字符串 元组)


只有两种情况才会考虑使用集合
1.关系运算
  两个群体之间判断 交叉并集
   2.去重操作
       去除重复的元素
       
       
定义空集合 需要使用关键字set
ss = set()
   print(ss,type(ss))  # set
   
   
关系运算
f1 = {'jason','egon','kevin','tony'}
f2 = {'jason','jack','oscar','kevin'}
# 共同好友
print(f1 & f2)  # {'jason','kevin'}
# f1独有
print(f1 - f2)  # {'tony','egon'}
# f2独有
print(f2 - f1)  # {'oscar','jack'}
# 所有好友
print(f1 | f2)  # {'jason','egon','kevin','tony','jack','oscar'}
# 各自好友(不包含共有)
print(f1 ^ f2)  # {'egon','tony','jack','oscar'}


去重操作
l = [11,22,33,22,11,44,33,22,55,66,66,66]
# for循环一个个元素 判断当前元素是否已存在
new_l = []
for i in l:
   if i not in new_l:
       new_l.append(i)
print(new_l)  # [11, 22, 33, 44, 55, 66]
# 将列表转换成集合
res = set(l)
print(res)
'''集合内默认不能出现重复的元素 如果出现了会自动去重'''
r1 = {11,22,22,22,11,44,44,44}
print(r1)  # r1 = {11,22,44}


父集 子集
"""
父级:A包含B 那么A就是B的父级
子级:A包含B 那么B就是A的子级
"""
s1 = {1,2,3,4,5}
s2 = {1,2,3}
print(s1 > s2)  # True
print(s1 < s2)  # False

 

标签:username,内置,jason,元组,123,print,hobby,d1,字典
来源: https://www.cnblogs.com/zhounan1128/p/14846419.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有