设为首页 加入收藏

TOP

python基础知识三 字典-dict + 菜中菜(一)
2019-07-11 22:10:12 】 浏览:62
Tags:python 基础知识 字典 -dict

3.7字典:dict+菜中菜

1.简介

? 无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联

? 定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}

逗号分割的是一个元素,'cx'(键):10(值) -- 键值对

字典的键:要使用不可变数据类型(可哈希)。要求键唯一,如果有重复的,后面的会将前面的覆盖。

? 可哈希的 -- 不可变的数据类型 - 避免哈希冲突使用了开放寻址法

? 不可哈希的 -- 可变的数据类型

?

字典的值可以任意。

2.字典的使用

1.增:
  1. 直增:dict1['li'] = 89
  2. dict1.setdefault('liw',100)#此方法按键去查字典是否有对应的键值对,如果没有,执行添加,如果有,则不添加,有返回值,原字典有,则返回值,没有返回None
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
#1
dict1['li'] = 89
print(dict1)
#2
print(dict1.setdefault('liw'))
dict1.setdefault('liw',100)
print(dict1.setdefault('liw',100))
print(dict1)
2.删:
  1. del dict1['cx'] :通过查找字典的键删除键值对,如果没有会报错。

  2. dict1.pop('cx'):通过字典的键删除键值对,返回被删除值

  3. dict1.clear():清空

    dict1 = {'cx':10,'liwenhu':80,'zhangyu':50,'wu':20}
    #1
    del dict1['cx'] 
    print(dict1)
    #2
    dict1.pop('wu')
    print(dict1.pop('wu'))
    print(dict1)
    #3
    dict1.clear()
    print(dict1)
3.改:
  1. dict1['cx'] = 'dsb' 通过键,如果原字典中没有此键对应的键值对,就是添加,如果有,就是修改

  2. dict1.update(dict2) :update括号中的字典级别高于前边的字典(括号中放的是要跟新的字典)

    dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
    #2
    dict2.update(dict1)
    print(dict2)
4.查:
  1. for 循环,获取的是键。

  2. dict1.get('cx') :通过键获取值,如果没有会返回None

  3. dict1['cx'] :通过键获取值,如果没有会报错。

    dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
    #1
    for i in dict1:
        print(i)
    #2  
    print(dict1.get('cx'))
    #3
    print(dict1['cx'])
5.字典的嵌套:
dic = {1001:["周杰伦","林俊杰"],
       1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
       1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
       1004:{"韦小宝":[{"教主夫人":["教主"]},
                    {"阿珂":"刺客"},
                    {"双儿":"天地会"},
                    {"爱心觉罗建宁":"公主"},
                    {"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[
                           "唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]
                             }},
                    {"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},
       1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}
       }
# print(dic)
# print(dic[1004]["韦小宝"][0]["教主夫人"][0])
# print(dic[1005]["常鑫"][-1])
# print(dic[1002]["汪峰"]["前妻2"][-1])
# print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
# print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])

3.菜中菜:

1.高仿列表:
  1. dict1.keys():获取字典中所有的键
  2. dict1.vlaues():获取字典中所有的值
  3. dict1.items():获取字典中所有的键和值(键值对)
2.解构:

解构示意图:

? a = 10

? b = 12

? a,b = b,a

dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
#1.键值对输出
for i in dict1:
    print(i,dict1.get(i))
print(dict1.keys())#2.高仿列表 ,支持for循环,不支持索引-- 结果:ict_keys([True, 'zhangyu', 'cx', 'liwenhu'])
for i in dict1.keys():
    print(i)
#print(dict1.keys()[0])
#3.dict1.values(),获取所有的值(可以转列表)
print(dict1.values())
print(list(dict1.values()))
#4.dict1.items():获取键值对
for i in dict1.items():
    print(i)
##解构
for i,j in dict1.items():#解构输出键值对
    print(i,j)
#5.解构。
a,b = 10 ,12
print(a)
print(b)

a = 10
b = 12
a,b = b,a
print(a)
print(b)

a,b = [1,2]
print(a,b)

a,_,b = (3.4.5)#'_'无用,只为将不要的4赋值进去
pri
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python之路——博客目录 下一篇python学习-37 其他的文件处理方法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目