Python dict-set-类型转换

原创
04/13 22:03
阅读数 382

一、dict (字典)

        Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

# -*- coding:utf-8 -*-
'''
使用键-值对(key-value)的形式存储数据,具有极快的查找速度

可以的特性:
    1、字典中的key必须唯一
    2、key必须是不可变对象
        a、字符串、整数等都是不可变的,可以作为key
        b、列表是可变的,不能作为key
    3、key一般为字符串


思考:保存一个学生的基本信息(姓名、性别、年龄、升高、体重)
stu1 = ["Martin", "男", 18, 173.5, 75]
stu2 = ["男", "liuchao", 72, 55, 173]


解决:使用字典
注意:字典中的键值对是无序的
'''
# 创建字典存储一个学生的基本信息
# {key1:value,key2:value2,……,keyn:valuen}
stu1 = {"name": "Martin", "age": 18, "sex": "男", "height": 173.5, "weight": 75}
stu2 = {"name": "liuchao", "age": 55, "sex": "男", "height": 173, "weight": 72}
stus = [stu1, stu2]
print(stu1)
print("===")
print(stus)



#元素的访问
stu3 = {"name": "Martin", "age": 18, "sex": "男", "height": 173.5, "weight": 75}
#获取    字典名[key]    字典.get(key)
print(stu3["name"])
# print(stu3["score"]) #获取的键不存在会报错
score = stu3.get("score")
if score:
    print("分数为:%.2f"%score)
else:
    print("学生没有这个属性")


#添加  如果键不存在则增加属性,否则覆盖原数据
stu3["socre"] = 99.99
stu3["height"] = 180
print(stu3)

#删除
stu3.pop("socre")
print(stu3)



#遍历
stu4 = {"name": "Martin", "age": 18, "sex": "男", "height": 173.5, "weight": 75}
for key in stu4:
    print(key)
print("--------")
for value in stu4.values():
    print(value)
print("--------")
for key, value in stu4.items():
    print(key+": "+str(value))
print("--------")
for index, key in enumerate(stu3):
    print(index, key)




'''比较list和dict
dict
    优点:查找和插入的速度极快,不会随着key的增多而降低效率
    缺点:需要占用大量的内存,内存浪费过多
list
    优点:占用内存空间小,浪费内存很少
    缺点:查找和插入的时间会随着元素的增加而增加

所以,dict是用空间来换取时间的一种方法。

dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。

'''

二、set

        set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

# -*- coding:utf-8 -*-

'''
与dict类似,是一组key的集合(不存储value)
本质:无序和无重复的集合
'''

#创建:需要用一个list或者tuple作为输入集合
# 注意列表中的重复元素会被过滤掉
s1 = set([1,2,3,4,5,3,4])
print(s1)
# 列表去重
numList = [1,2,3,5,7,8,3,5,6,8,9]
numList = list(set(numList))
print(numList)


#添加
s2 = set([1,2,3,4,5])
# 插入list、字符串、元组的每个元素
# iterable 可迭代对象
# s2.update("sunck")
# s2.update([6,7,8])
# s2.update((6,7,8))
# 不能直接插入数字
# s2.update(9)
print(s2)



#删除
s3 = set([1,2,3,4,5])
# 从左侧开始删除
print(s3.pop())
# 删除对应的元素,如果元素不存在会报KeyError的异常
s3.remove(3)
print(s3)



#遍历
s4 = set([6,2,3,4,5])
for key in s4:
    print(key)
print("------")
for index, key in enumerate(s4):
    print(index, key)


#交集与并集
s5 = set([1,2,3])
s6 = set([2,4,3])
# 交集
print(s5 & s6)
# 并集
print(s5 | s6)

三、类型转化

# -*- coding:utf-8 -*-
'''

list和tuple中的元素不能存在可变对象
list、tuple、string-->set
set()

tuple、set、string-->list
list()

list、set、string-->tuple
tuple()
'''

————————————————
版权声明:本文为【PythonJsGo】博主的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
博主主页:https://my.oschina.net/u/3375733

本篇文章同步在个人公众号:

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部