首页 > 其他分享 >字典,元组,元组内置方法、相关面试题 、 集合的内置方法 、字符编码 、文件操作 、函数

字典,元组,元组内置方法、相关面试题 、 集合的内置方法 、字符编码 、文件操作 、函数

时间:2023-07-17 16:14:12浏览次数:65  
标签:username 面试题 内置 name 18 age 元组 print dic

字典的内置方法

1. 定义方式
	d = {'usernamne':"kevin"}
    # 定义空字典
    d = {}
    info = dict(username='kevin', age=18)  # {'username': 'kevin', 'age': 18}
	print(info)	
# dic = {
#     'name': 'xxx',
#     'age': 18,
#     'hobbies': ['play game', 'basketball']
# }

# 1. 支持key取值
# print(dic['name'])
# print(dic['hobbies'])  # ['play game', 'basketball']
# print(dic['hobbies'][1])  # basketball

# 2. 赋值操作
# dic['name'] = 'kevin'  # {'name': 'kevin', 'age': 18, 'hobbies': ['play game', 'basketball']}
# dic['gender'] = 'male' # 字典:当K存在的时候,就是修改操作,当k不存在的时候,就是增加一个key值 (重要)
# print(dic)

# dic1 = {'name': 'yyy'}
# dic1['name'] = 'xxx'
# dic1['age'] = 'aaaa'
# dic1['gender'] = 'xxx'
# print(dic1)
# print(len(dic1))   # 3

# # 3、成员运算in和not in

# d = {'username':'kevin', 'age':18}
# print('kevin' in d) # False
# print('username' in d) # True
# print('username' not in d)

# 删除
# d = {'username':'kevin', 'age':18}
# # d.pop('username')  # {'age': 18} 字典删除k值必须写上要删除的key值,不能通过索引删除值
# del d['username']  # {'age': 18}
# print(d)

# 5、键keys(),值values(),键值对items() 三剑客
# d = {'username': 'kevin', 'age': 18}
# print(d.keys())  # dict_keys(['username', 'age'])  # 把它当成列表来记忆,把字典的所有key拿出来,组装成列表返回
#
# print(d.values())  # dict_values(['kevin', 18]) #  把它当成列表来记忆,把字典的所有value值拿出来,组装成列表返回
#
# # 返回的是列表套元组的形式,列表里面是一个个的小元组,元组里面是字典的k和v
# print(d.items()) # dict_items([('username', 'kevin'), ('age', 18)])

# for i in d.keys():
#     print(i)
#
# for j in d.values():
#     print(j)
# d.items()----->dict_items([('username', 'kevin'), ('age', 18)])
# for items in d.items():
#     # items是元组啊
#     print(items)  # ('username', 'kevin')
#     # print(items)  # ('age', 18)
#     print(items[0], items[1])

# for dic in d:
#     print(dic)  # 暴露的是k值


############################################字典的其他方法
# 1. get
# d = {'username': 'jack', 'age': 18}
# print(d['username'])
# print(d['username1'])  # 字典取值,如果key不存在,直接报错
# print(d.get('username'))  # jack
# print(d.get('username1'))  # None 如果使用get取值,key存在,则直接取出对应的值,如果key不存在,返回None
# if d.get('username1'):
#     print('有值')
# else:
#     print('无值')

'''以后字典取值最好使用get取值,不会直接报错'''
# print(d.get('username', 'xxx'))  # jack
# print(d.get('username1', 'xxx'))  # xxx, get可以传递第二个参数,意思是默认值,当取出的key不存在的时候,直接返回第二个参数的值


# d = {'username': 'jack', 'age': 18, 'gender':'male'}
# # popitem
# print(d.popitem())  # ('age', 18)  ('gender', 'male')
# print(d)  # {'username': 'jack'}    {'username': 'jack', 'age': 18}
'''代表的是删除字典的元素。但是,删除的值末尾的k:v,并且把最后一个k:v弹出来了'''

# update

# d = {'username': 'jack', 'age': 18, 'gender': 'male'}

'''update的功能是:如果字典的k存在,则修改原来的k,如果不存在,则添加一个新值'''
# d1 = {'username': 'tank', 'hobbys': ['read', 'music']}
# d.update(d1)
# print(d) # {'username': 'tank', 'age': 18, 'gender': 'male', 'hobbys': ['read', 'music']}

# fromkeys()  了解
# dic = dict.fromkeys(['k1','k2','k3', 'k4'],[]) # 相当于是给字典批量赋值
# print(dic)  # {'k1': [], 'k2': [], 'k3': []}
# '''使用fromkeys初始化出来的值,占用的是一样的内存地址,有一个值改变了,其他值跟着改变'''
#
# dic['k1'].append(666)  # {'k1': [666], 'k2': [666], 'k3': [666], 'k4': [666]}
# dic['k2'].append(999)  # {'k1': [666, 999], 'k2': [666, 999], 'k3': [666, 999], 'k4': [666, 999]}
# dic['k3'].append(888)  # {'k1': [666, 999, 888], 'k2': [666, 999, 888], 'k3': [666, 999, 888], 'k4': [666, 999, 888]}
# print(dic)

# setdefault()
dic = {'k1': 111, 'k2': 222}
# res = dic.setdefault('k3', 333)  # {'k1': 111, 'k2': 222, 'k3': 333}
res = dic.setdefault('k3', 333)  # {'k1': 111, 'k2': 222, 'k3': 333}
print(dic)
print(res)  # 333

元组的内置方法

"""
	使用小括号括起来,内部存放多个元素,元素之间逗号个隔开,元素值不支持修改(索引对应的那个元素不能修),不可变的列表
"""
# 1. 类型转换
print(tuple('hello'))  # ('h', 'e', 'l', 'l', 'o')
print(tuple((1, 2, 3, 4)))  # (1, 2, 3, 4)
print(tuple([1, 2, 3, 4, 5]))  # (1, 2, 3, 4, 5)
print(tuple({'a': 1, 'b': 2}))  # ('a', 'b')
print(tuple({1, 2, 3, 4}))  # (1, 2, 3, 4)

# 2. 
t = (1, 2, 3, 4)
# print(t[0])
# print(t[1])
# print(t[2]) # 索引取值,索引从0开始
# print(t[-1])
# print(t[-2]) # 负数代表的就是方向

# 切片
# print(t[0:2])  # (1, 2)
# print(t[0:])  # (1, 2)
# print(t[:2])  # (1, 2)
# print(t[0:3:2])  # (1, 2)

# 求长度
# print(len(t))
# 4、成员运算 in 和 not in
# >>> 'hhaha' in tuple1
# True
# >>> 'hhaha' not in tuple1
# 5、循环
# for line in t:
#    print(line)


# 2.
t1 = (123)
t2 = (1.123)
t3 = (1)
t4 = (1234, )
# <class 'int'>  <class 'float'>  <class 'int'>
print(type(t1), type(t2), type(t3), type(t4)) # <class 'tuple'>
'''当元组内只有一个元素的时候,也要加上逗号结尾,否则不是元组类型!'''
l = [1, ]
print(type(l)) # <class 'list'>
'''建议:
        只要是容器类型,当元素只有一个的时候,建议都加上逗号
容器类型:
    只要是能够存放多个元素的数据类型都可以称之为是容器类型
'''

集合的内置方法

1. 如何定义集合
s = {1, 2, 3, 4}
"""
	使用大括号括起来,内部存放多个元素,元素之间逗号隔开,不是k:v键值对的形式
"""
2. 集合功能:去重、集合运算、无序
3. 如何定义一个空集合:set() 
# 集合的关键字:set
# print(set(123))   不行
# print(set(123.1)) 不行
print(set('hello'))  # {'e', 'o', 'l', 'h'}
print(set([1, 2, 3, 4, 4, 3, 2, 1]))  # {1, 2, 3, 4}
print(set((1, 2, 3, 4, 5)))  # {1, 2, 3, 4, 5}
print(set({'username': 'kevin', 'age': 28}))  # {'age', 'username'}
'''集合能够把支持for循环的数据类型都转为集合类型!'''


"""课堂练习1:"""
# s = {1, 2, 3, 4, 4, 3, 2, 23, 534, 65, 76, 78, 43, 324, }
# print(s)

name_list = ['kevin', 'tank', 'tony', 'tony', 'jack', 'jack', 'jack', 'tony', 'ly',]
# 基本要求:去重
print(set(name_list))  # {'tank', 'jack', 'kevin'}

# 再次转为列表
print(list(set(name_list)))  # ['kevin', 'tank', 'jack']

#### 拔高要求
# 去重,并且保留原来的顺序

new_list = [] # 用来存放取出之后的元素
for name in name_list:
    # name----->列表的一个个元素
    if name not in new_list:
        new_list.append(name)

print(new_list)  # ['kevin', 'tank', 'tony', 'jack', 'ly']

集合的关系运算

friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们
friends2 = {"Jy","ricky","jason","egon"}   # 用户2的好友们

# 1.合集/并集(|):求两个用户所有的好友(重复好友只留一个)
print(friends1 | friends2) # {'zero', 'kevin', 'ricky', 'Jy', 'jason', 'egon'}

# 2. 交集(&):求两个用户的共同好友
print(friends1 & friends2)  # {'jason', 'egon'}

# 3.差集(-):
print(friends1 - friends2)  # {'kevin', 'zero'}
print(friends2 - friends1)  # {'Jy', 'ricky'}
# 4.对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友)
print(friends1 ^ friends2)
# 5.值是否相等(==)
print(friends1 == friends2) # False

# # 6.父集:一个集合是否包含另外一个集合
# # 6.1 包含则返回True
print({1, 2, 3} >= {1, 2, 3}) # True
print({1, 2, 3} < {1, 2}) # True


# 练习一下练习题:
>>> l=['a','b',1,'a','a']
>>> s=set(l)
>>> s # 将列表转成了集合
{'b', 'a', 1}
>>> l_new=list(s) # 再将集合转回列表
>>> l_new
['b', 'a', 1] # 去除了重复,但是打乱了顺序

# 针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
    {'name':'lili','age':18,'sex':'male'},
    {'name':'jack','age':73,'sex':'male'},
    {'name':'tom','age':20,'sex':'female'},
    {'name':'lili','age':18,'sex':'male'},
    {'name':'lili','age':18,'sex':'male'},
]

new_l=[]

for dic in l:
    if dic not in new_l:
        new_l.append(dic)

print(new_l)
# 结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重
[
    {'age': 18, 'sex': 'male', 'name': 'lili'}, 
    {'age': 73, 'sex': 'male', 'name': 'jack'}, 
    {'age': 20, 'sex': 'female', 'name': 'tom'}
]


# 1.长度
>>> s={'a','b','c'}
>>> len(s)
3

# 2.成员运算
>>> 'c' in s
True

# 3.循环
>>> for item in s:
...     print(item)

集合练习题

"""
一.关系运算
  有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
  pythons={'ly','qq','kevin','ricky','gangdan','biubiu'}
  linuxs={'kermit','tony','gangdan'}
  1. 求出即报名python又报名linux课程的学员名字集合
  2. 求出所有报名的学生名字集合
  3. 求出只报名python课程的学员名字
  4. 求出没有同时这两门课程的学员名字集合
"""
# 求出即报名python又报名linux课程的学员名字集合
>>> pythons & linuxs
# 求出所有报名的学生名字集合
>>> pythons | linuxs
# 求出只报名python课程的学员名字
>>> pythons - linuxs
# 求出没有同时这两门课程的学员名字集合
>>> pythons ^ linuxs

标签:username,面试题,内置,name,18,age,元组,print,dic
From: https://www.cnblogs.com/huangchunfang/p/17560381.html

相关文章

  • java真实业务场景面试题
    Java真实业务场景面试题Java是一种广泛使用的面向对象编程语言,在各个行业中都有广泛的应用。因此,在Java开发人员的面试中,经常会涉及到一些与真实业务场景相关的问题。本文将为您介绍一些常见的Java真实业务场景面试题,并提供相应的代码示例。1.数据库连接池数据库连接池是Java中......
  • Python 全栈工程师必备面试题 300 道(2020 版)
    2020元旦巨献,面试升级必备!献给正在学习Python的同学!Python全栈工程师必备面试题300道(2020版)Python面试不仅需要掌握Python基础知识和高级语法,还会涉及网络编程、web前端后端、数据库、网络爬虫、数据解析、数据分析和数据可视化等各方面的核心知识。针对网上资料参差不齐,并......
  • 【补充】Django缓存与内置信号
    【一】缓存的介绍【1】什么是缓存简单概括就是将对数据库操作查询所得到的数据放入另外一台机器上(缓存)中当用户再次请求时,直接去缓存中拿,避免对数据库的频繁操作,加快数据的显示时间需要知道的是,缓存里面的数据一般都设置有超时时间,缓存一般用在数据变化不大,实时率不高的......
  • 10个最常见的HTML5面试题及答案
    1、新的HTML5文档类型和字符集是?HTML5文档类型很简单:<!doctypehtml>HTML5使用UTF-8编码示例:<metacharset=”UTF-8″>2、HTML5中如何嵌入音频?HTML5支持MP3、Wav和Ogg格式的音频,下面是在网页中嵌入音频的简单示例:<audiocontrols><sourcesrc=”jamshed.m......
  • 2023最新C语言经典面试题汇总
    ​写出Bool、int、指针变量、float与“零值”比较的if语句Bool型:if(flag)、if(!flag)int型:if(flag==0)、if(flag!=0)指针变量:if(p==NULL)、if(p!=NULL)float型:constfloatEPSINON=0.0001;if((x>=-EPSINON)&&(x<=EPSINON));设置地址未为0x67a9......
  • 数据库(SQL注入问题、视图、触发器、事务、存储过程、内置函数、流程控制、索引)
    SQL注入问题SQL注入的原因:由于特殊符号的组合会产生特殊的效果 实际生活中,尤其是在注册用户名的时候会非常明显的提示你很多特殊符号不能用,会产生特殊的效果。结论:涉及到敏感数据部分,不要自己拼接,交给现成的方法拼接即可。importpymysql#链接MySQL服务端conn=pymysql.......
  • PS 2023 Beta AI 爱国版完美解锁,内置AI绘画功能
    photoshopbetaai的推出,掀起了一波AI热潮,最新Adobe推出的photoshopbetaai,我们仅需动用一下手指就能完成以前完不成的事情,使用起来非常简单方便。PS2023BetaAI爱国版完美解锁,内置AI绘画功能,小编为大家带来了PS2023BetaAI爱国版资源,需要的朋友不要错过。PS2023Beta......
  • .NET面试题系列(23)tcp粘包问题
    序言 什么是粘包所谓粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。解决粘包问题的方法 资料tcp粘包问题......
  • JAVA面试题----Redis
    Redisredis快的原因:完全基于内存操作,请求都在内存中所以快;它是单线程,省去了线程切换的时间和锁竞争的开销。采用io多路复用,多路指多个网络,对单个线程进行复用,避免了大量无用的操作。为什么使用redis:速度快,支持丰富的数据类型,redis集群不支持事务,内部单节点支持事务,操作都是原子......
  • JAVA面试题----MYSQL
     MYSQL。          mysql使用的引擎是InnoDB,它有四大特性:1插入缓冲2二次写3自适应hash索引(ahi),就不用走B+树了;4预读。使用InnoDB因为它是事务安全的存储引擎,它具备提交,回滚以及崩溃恢复的功能以及保护用户数据。MYSQL的索引分类:1主键索引2,唯一索引3.复合索......