302_python_数据类型_dict_set_推导式_生成器

举报
alexsully 发表于 2022/02/23 23:17:55 2022/02/23
【摘要】 dict set 生成器 推导式

字典类型(dict)


info = { 键:值 , 键:值 , 键:值, 键:值 }


info = {"name":"alex","age":18,"size":3}  # 映射方式 非dict()
dict() 方法
numbers = dict(x=5, y=0) # 关键字 class dict(**kwarg) 
numbers1 = dict({'x': 4, 'y': 5}) #映射方式  #class dict(mapping, **kwarg)
numbers2 = dict([('x', 5), ('y', -5)], z=8) # 关键字+迭代 #class dict(iterable, **kwarg) 



清空字典:clear(); dict1.clear()
删除指定键值对: del dict['a'](#删除键值对);  del dic(#删除字典)
dict1.pop('a')  # 弹出键值为a 的key ; 由于字典无序(映射) 不能像list; .pop(1)


info["name"] = "bob"

update()   #字典中,键是唯一的,如果存在两个一样的键,后者会替代前者
dict5={'b':3,'c':4}
dict6={'a':7,'c':8}
dict5.update(dict6)
print(dict5)   #输出:{'b': 3, 'a': 7, 'c': 8}


info = {"name":"alex","age":18,"size":3}
v1 = info.get("name")
print(v1) # "alex"

info.keys() # ["name","age","size"]
info.values() # ["alex",18,3]

info.items() # [ ("name","alex"), ("age",18), ("size",3)]
for k,v in info.items():


公共
1 len() 长度 多少个键值对
2 索引  
3 in 判断 

#索引
info["name"] = "bob"

# 键中是否存在xx
info = {"name":"陈聪","age":18,"size":3}
if 'xx' in info:
 pass


 
4 遍历(其实是遍历所有的key)

info = {"name":"alex","age":18,"size":3}
for item in info:
    print(item, type(item))  #name <class 'str'>
    print(info[item])  # alex


集合:无序且不重复的元素集合{},


set{}(#创建空集合,a=set{}) 不同元素构成, 集合中的元素必须是不可变的,集合无序,集合像一个无值得字典 

v1 = [11,22,33] # [] list()
v2 = (11,22,33) # () tuple()
v3 = { "k1":123, "k2":123 } # {} dict()
v4 = { 11,222,333,44} # set()


v1 = {11, 22, 33}
v1.add(44)


v1.discard(22)


set2={1, 2, 3, 4, 5, 'x'}
set2.update(['a','b'])
print(set2 )   #输出:{1, 2, 3, 4, 5, 'a','b'}


v1 = {11, 22, 33}
v2 = {33, 44, 55}

交集

res = v1.intersection(v2)

并集

res = v1.union(v2)
print(res)
result = v1 | v2
print(result)

差集

# res1 = v1 - v2
res1 = v1.difference(v2) # v1有且v2没有的数据
print(res1)
# res2 = v2 - v1
res2 = v2.difference(v1) # v2有且v1没有的数据
print(res2)


公共功能
1 长度 len()
2  切片/索引不支持
3 循环
4 包含

v1 = {11, 22, 33}
for item in v1:
 print(item) 
 
if 11 in v1:
 pass
else:
 pass


推导式&生成器


# 列表推导式
num_list = [ 100 for i in range(100) if i > 7 and i<10 ]
print(num_list) # [100,100]

# 字典推导式
info = { i:123 for i in range(10)}
print(info) #{0: 123, xxxx}

# 集合推导式
data = {i for i in range(10)}
print(data) #{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

# 生成器
data = (i for i in range(10))
print(data, type(data))  # <generator object <genexpr> at 0x000001A5ED732040> <class 'generator'>
for item in data:
    print(item)


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。