Python_面向对象_dict推导式

字典推导式: {推导式}

***enumerate***
"""
  enumerate(sequence,[start=0])
  功能:将索引号和sequence的值一一对应组成一个个元祖放入迭代器中
  sequence: 数据具有可迭代性
  start: 选择开始的索引号(默认从0开始索引)
  返回:迭代器
"""

# 案例1
listvar = ["张三","李四","王二麻子"] 
print(listvar.index("王二麻子"))

res = { keys:values for keys,values in enumerate(listvar)}
print(res)


# 案例2

# 瞬间得到键和值得反转
dictvar = {0: '张三', 1: '李四', 2: '王二麻子'}
res = {values:keys for keys,values in dictvar.items()}
print(res)

 

***zip***
"""
  zip(iter1,iter2,[,iter3])
  功能:将迭代对象中对应的元素一一对应打包成一个个元组
  iter1: 数据具有可迭代性
  返回:迭代器
  注意: 参数里至少2个数据
""

# 案例3 zip 瞬间得到字典的操作
# *zip按照序列个数最少的那个来匹对 多余的舍掉
list1 = ["top","middle","bottom","jungle","support"]
list2 = ["花木蓝","甄姬","李元芳","赵云","蔡文姬","胜多负少","9988"]
res = {i[0]:i[1] for i in zip(list1,list2)}
print(res)

# 简单写法
res = dict(zip(list1,list2))
print(res)

# 案例4 用zip函数进行键值反转 
dictvar = {1:"a",2:"b",3:"c",4:"d"}
print(dictvar.keys())
print(dictvar.values())
newdict = dict(zip(dictvar.values(),dictvar.keys()))
print(newdict)


# 案例5 zip的扩展 可滑动的序列
listvar = [1,2,3,4,5,6,7,8,9,10,11]
# 如果是2个 [(1,2),(3,4),(5,6),(7,8),(9,10)]
# 如果是3个 [(1,2,3),(4,5,6),(7,8,9)]

print( list(zip(list1,list2,list3)) )
func = lambda listvar,k : zip( *( listvar[i::k] for i in range(0,k)) )
res = func(listvar,4)
print(list(res))

"""
# 分析过程:
list1 = [1,3,5,7,9,11]
list2 = [2,4,6,8,10]


list1 = [1,4,7,10]
list2 = [2,5,8,11]
list3 = [3,6,9]
# (1,2,3) (4,5,6)

res1 = listvar[0::2]
res2 = listvar[1::2]
print("<123>")
print(res1)
print(res2)
print("<456>")
res1 = listvar[0::3]
res2 = listvar[1::3]
res3 = listvar[2::3]
print(res1)
print(res2)
print(res3)
"""

 ==============================================================================================================

--字典相关函数
#clear()清空字典
#copy()复制字典
#fromkeys() 使用指定的序列和值创建字典字典
#keys() 将字典的键组成新的容器
#values()将字典中的值组成新的容器
#items()将字典转化为二级容器数据
#pop() 删除字典中的元素(必须传递一个key 返回删除的那个值)
#popitem() 随机删除字典中的键值对(返回键值元组 当字典为空的时候会引发KeyError)
#update() 批量更新数据(如果添加的key在原始字典中没有,就添加新的键值对,如果有,就更新原键值对)
#get() 通过键来获取字典的值(当键不存在时 返回一个None 也可以设置默认值)
#setdefault() 设置数据 setdefault() update() 方法类似, 只设置不能修改

 

# --字典相关函数
dictvar = {'a':1,"b":2,'c':3,'d':4}
#clear()清空字典
res = dictvar.clear()
print(res)
print(dictvar)


#copy()复制字典
dictvar = {'a':1,"b":2,'c':3,'d':4,'e':[1,2,3,4,5]}
"""
#例子一
dict2 = dictvar.copy()
print(dict2)
dictvar['a'] = "昨天晚上下暴雨了呦"
dictvar['e'][0] = "5488"
print(dict2)
"""
#例子二
import copy
# copy 浅拷贝 deepcopy 深拷贝
res = copy.copy(dictvar) # dictvar.copy() 等价 一模一样的浅拷贝
print(res)

res = copy.deepcopy(dictvar)
dictvar['a'] = "昨天晚上下暴雨了呦"
dictvar['e'][0] = "5488"
print(res)
print(dictvar)


#fromkeys() 使用指定的序列和值创建字典字典
listvar = ["yxrs","gbjd","bjky","mlxg"]
res = {}.fromkeys(listvar,[1,2,3])
print(res)

#keys() 将字典的键组成新的容器
listvar = {"yxrs":"鱼香肉丝","gbjd":"宫保鸡丁","bjky":"北京烤鸭","mlxg":"麻辣香锅"}
res = listvar.keys()
print(res)


#values()将字典中的值组成新的容器
listvar = {"yxrs":"鱼香肉丝","gbjd":"宫保鸡丁","bjky":"北京烤鸭","mlxg":"麻辣香锅"}
res = listvar.values()
print(res)


#items()将字典转化为二级容器数据
listvar = {"yxrs":"鱼香肉丝","gbjd":"宫保鸡丁","bjky":"北京烤鸭","mlxg":"麻辣香锅"}
res = listvar.items()
print(res)

#pop() 删除字典中的元素(必须传递一个key 返回删除的那个值)
listvar = {"yxrs":"鱼香肉丝","gbjd":"宫保鸡丁","bjky":"北京烤鸭","mlxg":"麻辣香锅"}
res = listvar.pop("bjky")
print(res)
print(listvar)

#popitem() 随机删除字典中的键值对(返回键值元组 当字典为空的时候会引发KeyError)
listvar = {"yxrs":"鱼香肉丝","gbjd":"宫保鸡丁","bjky":"北京烤鸭","mlxg":"麻辣香锅"}
res = listvar.popitem()
print(res)
print(listvar)


#update() 批量更新数据(如果添加的key在原始字典中没有,就添加新的键值对,如果有,就更新原键值对)
listvar = {"yxrs":"鱼香肉丝","gbjd":"宫保鸡丁","bjky":"北京烤鸭","mlxg":"麻辣香锅"}
# (1)批量更新数据(修改)
listvar.update(yxrs="1234",gbjd="5678",bjky="qqqppp")
# (2)批量添加数据(添加)
listvar.update(bjtam="北京天安门",wukelan="乌克兰生产美女")
print(listvar)

#扩展了解: 也可以这样写 都行
# listvar.update({"bjtam":"北京天安门","wukelan":"乌克兰生产美女"})

#get() 通过键来获取字典的值(当键不存在时 返回一个None 也可以设置默认值)
listvar = {"yxrs":"鱼香肉丝","gbjd":"宫保鸡丁","bjky":"北京烤鸭","mlxg":"麻辣香锅"}
print(listvar['yxrs'])
# 如果没有 返回None
print(listvar.get("yxrs1234567"))
# 也可以设置一个默认值
print(listvar.get("yxrs1234567","这个键没有呀兄弟"))

#setdefault() 设置数据 setdefault() update() 方法类似, 只设置不能修改
listvar = {"yxrs":"鱼香肉丝","gbjd":"宫保鸡丁","bjky":"北京烤鸭","mlxg":"麻辣香锅"}
# res = listvar.setdefault({"a":6})
# print(res)
# print(listvar)

# 设置值
listvar.setdefault("yxrs12345","12345")
print(listvar)

转载于:https://www.cnblogs.com/bling-bling-star/p/9392018.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值