Python学习_5_元组_字典

# tuple元祖

# 元组被称为只读列表,即数据可以被查询,但不能被修改,所以,列表的切片操作同样适用于元组。
# 元组写在小括号(())里,元素之间用逗号隔开。
# 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
# 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
#作用:
#对于一些数据我们不想被修改,可以使用元组;
#另外,元组的意义还在于,元组可以在映射(和集合的成员)中当作键使用——而列表则不行;元组作为很多内建函数和方法的返回值存在。
print(tup2)
a = tuple()
print(a)
print(tup1)
b = [1, 2, 3, 4]
print(b[1:2])
c = (1, 2, 3, 4)
print(c[1:2])

d = "j", "l"
print(d[0:1])
 
# 字典

# 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。
# python对key进行哈希函数运算,根据计算的结果决定value的存储地址.
# 所以字典具有两个特点:
# 1.是无序存储的
# 2.key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
# 字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。
# 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:
# 字典当中的元素是通过键来存取的,而不是通过偏移存取。

# 不可变类型:整形,字符串,元组,布尔值
# 可变类型:列表,字典

# 创建字典:2种方式
# 方式1:直接用大括号创建并赋值给变量
# dic = {} #创建一个空字典
# print(dic)
# dic1 = {"name":"mi", "age":"32"} #键值对,中间用冒号,左边是键右边是值,每组用逗号隔开
# print(dic1)

# 方式2:用dict
# dic2 = dict({"name":"mi"})
# print(dic2) #输出结果{'name': 'mi'}
# dic3 = dict((("a","b"),))
# print(dic3) #输出结果{'a': 'b'}

# 字典的操作:
# 1. 增加:
# (1)通过给键赋值直接增加,如果键已存在则给键重新赋值
# dic1 = {"name":"mi"}
# dic1["age"] = 32
# print(dic1) # 输出结果{'name': 'mi', 'age': 32}
# dic1["name"] = 32
# print(dic1) # 输出结果{'name': 32}

# (2)通过setdefault内置方法
# (2.1)键存在,不改动值,并返回字典中键相对应的值
# dic1 = {"name":"mi"}
# ret = dic1.setdefault("name","yang")
# print(dic1) # 输出结果{'name': 'mi'}
# print(ret) #输出结果 mi

# (2.2)键不存在,在字典中增加新的键值对,并返回相应的值
# ret = dic1.setdefault("age",32)
# print(dic1) #输出结果{'name': 'mi', 'age': 32}
# print(ret) #输出结果 32

# 2. 查:
# (1)通过键查到值
# dic1 = {"name": "mi","age":32}
# print(dic1["name"]) #打印结果mi
# print(dic1["age"])

# (2)查所有的key,值,或者键值对
# print(dic1.keys()) #打印结果dict_keys(['name', 'age'])
# print(dic1.values()) #打印结果dict_values(['mi', 32])
# print(dic1.items()) #打印结果dict_items([('name', 'mi'), ('age', 32)])
# 注意查询出来的类型在python3中不是列表,可以转换成列表
# list(dic1.keys())

# 3.改:
# (1)通过键改值
# dic1 = {"name": "mi","age":32}
# dic1["name"] = "yang"
# print(dic1) #打印结果{'name': 'yang', 'age': 32}

# (2)通过update内置方法,可以把一个字典添加到另一个字典中,如果有键相同,则替换相应的值
# dic1 = {"name": "mi","age":32}
# dic2 = {"hobby": "sleep"}
# dic1.update(dic2)
# print(dic1) #打印结果{'name': 'mi', 'age': 32, 'hobby': 'sleep'}
# dic1 = {"name": "mi","age":32}
# dic2 = {"age": 33}
# dic1.update(dic2)
# print(dic1) #打印结果{'name': 'mi', 'age': 33}

# 4.删:
# (1)del删除键值对
# dic1 = {"name": "mi","age":32}
# del dic1["name"]
# print(dic1) #打印结果{'age': 32}

# (2)clear清空列表
# dic1 = {"name": "mi","age":32}
# dic1.clear()
# print(dic1) #打印结果{}

# (3) pop通过键删除键值对,有返回值
# dic1 = {"name": "mi","age":32}
# a = dic1.pop("name")
# print(a) #打印结果mi
# print(dic1) #打印结果{'age': 32}

# (4)popitem随机删除,并以元组方式返回值
# dic1 = {"name": "mi","age":32}
# a = dic1.popitem()
# print(a,dic1) #打印结果('age', 32) {'name': 'mi'}

# (5)del删除整个字典
# dic1 = {"name": "mi","age":32}
# del dic1
# print(dic1)

# 5.其他操作以及涉及到的方法
# (1)创建字典的另一种方式 dict.fromkeys 两个参数,第一个列表里面每一个值作为键,后面一个参数是所有键的值
# d1 = dict.fromkeys(["host1","host2","host3"],("mac"))
# print(d1) #打印结果 {'host1': 'mac', 'host2': 'mac', 'host3': 'mac'}

# (2)字典的嵌套

# (3)字典的排序 用sorted函数,没有内部 .sort的方法
# dic1 = {5:555,4:444,3:333}
# print(sorted(dic1)) #对键进行排序,结果[3, 4, 5]
# print(sorted(dic1.values())) #对值进行排序,结果[333, 444, 555]
# print(sorted((dic1.items()))) 结果[(3, 333), (4, 444), (5, 555)] #也是根据键排序

# (4)字典的遍历
dic1 = {"name": "mi","age":32}
#for i in dic1:
# print(i) # 循环遍历打印的是键,打印结果:
# name
# age
# print(i,dic1[i])# 此种方式打印键值对效率高,循环遍历打印的键和值,打印结果:
# name mi
# age 32
# for i in dic1.items():
# print(i) #items是键值对,所以这样打印结果是键值对以元组的形式打印:
# ('name', 'mi')
# ('age', 32)
#for i,v in dic1.items():
# print(i,v) #用两个变量接收,就可以去掉括号不以元组形式打印:
# name mi
# age 32
 

转载于:https://www.cnblogs.com/xihamhl/p/11130280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值