python『学习之路03』字典的操作

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/11/16 13:27
# @Author : mixiu26

info = {
"statu1101": "mingren",
"statu1102": "longze",
"statu1103": "malize",
}
print(info) # ---- >> 字典无序 {'statu1102', 'mingren', 'malize', 'statu1103', 'statu1101', 'longze'}
# 字典取值方式: 根据key取value
print(info["statu1101"]) # ---- >> mingren ---- >>key和value之间用:隔开
# 字典修改元素值: 直接修改元素key对应的value即可:
info["statu1101"] = "paofu" # 修改key对应的value即可: {'statu1101': 'paofu', 'statu1102': 'longze', 'statu1103': 'malize'}
print(info)

# 修改字典不存在的value元素: ----- >> 如果字典中有对应的key 指向带修改的value则直接修改value的值,如果没有对应的key指向对应的value,在字典中新增一条数据
info["statu1104"] = "paofu"
print(info) # {'statu1101': 'paofu', 'statu1102': 'longze', 'statu1103': 'malize', 'statu1104': 'paofu'}

# 删除: del ---- >> python 内置删除方法:
# del info["statu1101"] # {'statu1102': 'longze', 'statu1103': 'malize', 'statu1104': 'paofu'}
print(info)

# pop()删除字典元素: ---- >> 必须在pop(index)中传入待删除value的key值:
# info.pop("statu1101")
print(info) # ----- >> {'statu1102': 'longze', 'statu1103': 'malize', 'statu1104': 'paofu'}

# 随机删除: --- >> popitem --- 不建议使用

# get(index) ---- >> info["index"] 查找的区别: ----- >>info[index]: 除非我们确认字典中有这个元素,否则不存在就会报错的
# info("statu1106")
# print(info) # TypeError: 'dict' object is not callable

print(info.get("statu1106")) # 如果元素不存在,直接返回None

# 在不确定元素的value是否存在时,我们可以考虑先对元素进行判断,如果存在我们在进行查找
print("statu1106"in info) # 如果存在 --- >> 返回true , 如果不存在 ---- >> 返回false:False


# 多级字典的嵌套及操作:

bo_catalog={
"日本": {
"www.japen.com":["你的名字","东京爱情故事,小城愿望"],
"www.letian.com":["东京巧克力,生巧最优雅", "保质期很短"],
"www.lotian.com":["大阪,富士山冬天最美", "就是机票不便宜"],
"www.yinhua.com":["樱花节的时候, 满街都是樱花", "有钱推荐去那里玩"]
},
"美国":{"www.usa.com":["爱在黎明破晓前","是一部很不错的艳遇电影,主人公在旅行途中相遇"]},
"中国":{"www.123.com":["使行徒者","家辉哥和古天乐演的,很好看"]}
}
# 现在我们修改字典最后一个元素:注意修改元素时,要先取到元素对应的key,通过key去修改对应的value,如果key对应的value是一个列表,
# 那么我们就要对具体value[index] 对应的列表索引进行操作
bo_catalog["中国"]["www.123.com"][1] = "很喜欢家辉哥"

print(bo_catalog) # '中国': {'www.123.com': ['使行徒者', '很喜欢家辉哥']}

# 在字典中创一条新的值:
# bo_catalog.setdefault("台湾",{"www.456.com":[1,2]}) # 以key ---- >>value的形式向字典中插入一条数据:
# print(bo_catalog)

bo_catalog.setdefault("美国",{"www.456.com":[1,2]}) # 在字典查找美国额值,如果能取到就返回这个值

info2 = {
"statu1101": "mingren",
"statu1102": "longze",
"statu1103": "malize",
}
# setdefault的用法: 将key放在字典中查找,如果有相同的key就返回对应key的value,如果没有,就创建这条key,value的值
print(info2.setdefault("statu112","erbaiwu"))
print(info2) # {'statu1101': 'mingren', 'statu1102': 'longze', 'statu1103': 'malize', 'statu112': 'erbaiwu'}
print(info2.setdefault("statu1104","yuuy")) # 'statu1104': 'yuuy'
print(info2) # {'statu1101': 'mingren', 'statu1102': 'longze', 'statu1103': 'malize', 'statu112': 'erbaiwu', 'statu1104': 'yuuy'}

# update 的用法:
info3={
"statu1101" : "xiaoya",
"itcast_01": "luxi",
"itcast_02": "duoduo"
}
info2.update(info3)
# update ----- >> 更新已存在key的value值, 不存在的key值就新添加到调用者中
print(info2) # {'statu1101': 'xiaoya', 'statu1102': 'longze', 'statu1103': 'malize', 'statu112': 'erbaiwu', 'statu1104': 'yuuy', 'itcast_01': 'luxi', 'itcast_02': 'duoduo'}
# 用列表的形式输出列表: ---- >>将字典转成列表
print(info3.items()) # dict_items([('statu1101', 'xiaoya'), ('itcast_01', 'luxi'), ('itcast_02', 'duoduo')])

# 字典的循环:
for i in info3:
print(i) # ----- >>打印所有的key
# 打印所有的key和value:
for i in info3:
print(i,info3[i]) # statu1101 itcast_01 itcast_02 statu1101 xiaoya itcast_01 luxi itcast_02 duoduo

for k,v in info3.items(): # 将字典转成列表循环打印key和value的值
print(k,v) # statu1101 xiaoya itcast_01 luxi itcast_02 duoduo statu1101 xiaoya itcast_01 luxi itcast_02 duoduo
posted @ 2017-11-17 13:28  修一  阅读(239)  评论(0编辑  收藏  举报