字典dict的基本用法

风流意气都作罢 提交于 2019-11-26 17:19:57

1. dict
        用大括号{} 括起来. 内部使用key:value的形式来保存数据
        {'jay':'周杰伦', "jj":'林俊杰'}
        注意:字典的key必须是可哈希的. 不可变的, value 没有限制
        不是按照我们保存的顺序保存的, 无序的
    2. 增删改查
        1. 增:dict[不存在的key] = value, setdefault()

dic = {}

dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增⼀个key-value的组合进dict

dic['age'] = 18

print(dic)

# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值

dic.setdefault('李嘉诚') # 也可以往⾥⾯设置值.

dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会 起作⽤

print(dic)

        2. 删:pop(key). del dict[key]. popitem(), clear()

dic = {"牌牌":"你去哪里了", "晓雪":"你快回来.", "雪雪": "又走了"}
ret = dic.pop("晓雪") # 删除一个元素. 返回这个元素的value值
print(ret)
del dic["雪雪"]
print(dic)
ret = dic.popitem() # 返回给你的是一个元组.
print(ret)

        3. 改:dict[存在的key] = 新值, d1.update(d2) 把d2的k-v更新到d1中

dic = {"id":1, 'name':'李嘉诚', 'money':10000000}
# 李嘉诚赔了500
dic['money'] = dic['money'] - 500   # 用key去修改
print(dic)
dic1 = {"李晨":"范冰冰", "邓超":"孙俪", "王祖蓝":"李亚男"}
dic2 = {"李晨":"张馨予", "郑凯":"baby", "王宝强":"马蓉"}
dic1.update(dic2)   #  把dic2中的内容更新到 dic1 , 如果存在了key. 替换. 如果不存在,添加
print(dic1)
print(dic2)

        4. 查:get(key, 默认值), setdefault(), dict[key]

dic = {"及时雨":"宋江", "小李广":"花荣", "黑旋风":"李逵", "易大师":"剑圣"}
dic["大宝剑"] = "盖伦"   # 新增
dic["及时雨"] = "天老爷" # 修改
print(dic["易大师是个脑残"])   # 查询, 如果key不存在,报错
#get() 1、可以通过key来获取value的值. 那么如果key不存在. 返回None.
#      2、可以给出一个默认值. 当key不存在的时候返回默认值
print(dic.get("易大师"))   # 如果key不存在. 返回None
print(dic.get("余小C"))
dic = {"及时雨":"宋江", "易大师":"剑圣"}
dic.setdefault("及时雨", "诺克萨斯")    # 可以帮我们添加
print(dic)
ret = dic.setdefault("及时雨123", "hello")
print(ret)
print(dic)
# 1. 首先判断原来的字典中有没有这个key . 如果没有. 执行新增
# 2. 用这个key去字典中查询, 返回查到的结果
dic = {"及时雨":"宋江", "易大师":"剑圣"}
ret = dic.setdefault("西门庆")
print(dic) 
print(ret)  

    3. 字典的常用方法
        1. keys() 返回所有字典的key的集合(高仿列表)
        2. values() 返回所有的value的集合
        3. items()  返回键值对. 元组

dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
print(dic.keys())
for i in dic.keys():
    print(i)
print(dic.values())
for i in dic.values():
    print(i)
print(dic.items())
for i in dic.items(): #返回得是("key","value")的多个元组
    print(i)
for key,value in dic.items(): #返回的是多组两个字符串组成的数据
    print(key,value)

        解构:
            a, b = (1, 2)

a, b = 1, 2
print(a, b)
(c, d) = 3, 4
print(c, d)
e, f = [1, 2, 3] # 解构的时候注意数量必须匹配
print(e, f)
3、字典的嵌套
dic1 = {
    "name": "汪峰",
    "age": 18,
    "wife": {
        "name": '章⼦怡',
        "age": 28
    },
    "children": ['第⼀个⽑孩⼦', '第⼆个⽑孩⼦'],
    "desc": '峰哥不会告我吧. 没关系. 我想上头条的'
}
print(dic1.get("wife").get("name"))
print(dic1.get("children"))
print(dic1.get("children")[1])

 

作业:

dic1 = {

    'name':['alex',2,3,5],

    'job':'teacher',

    'oldboy':{

        'alex':['python1','python2',100]

    }

}

1,将name对应的列表追加⼀个元素’wusir’

 

dic1["name"].append("wusir")
print(dic1)

2,将name对应的列表中的alex⾸字⺟⼤写。

dic1["name"][0]=dic1["name"][0].capitalize()
print(dic1)

3oldboy对应的字典加⼀个键值对⽼男孩’,’linux’

法一:
dic1["oldboy"].setdefault("老男孩","linux")
print(dic1)
法二:
dic1["oldboy"]["老男孩"]="linux"
print(dic1)

4,将oldboy对应的字典中的alex对应的列表中的python2删除。

# 法一:
del dic1["oldboy"]["alex"][1]
print(dic1)
# 法二:
dic1["oldboy"]["alex"].pop(1)
print(dic1)
# 法三:
dic1["oldboy"]["alex"].remove("python2")
print(dic1)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!