基本数据类型-----字典(Dictionary)

一、字典(Dictionary)

    字典是另一种可变容器模型,且可存储任意类型对象。

    值可以取任何数据类型,也可以嵌套多层,但键必须是不可变的,如字符串,数字或元组,这些键会转为hash值存储起来;键不可以列表,布尔值,字典,因为这些不可以转为hash值存储起来

    字典是无序的,每次用print函数输出的结果顺序都不一定相同。

    字典的每个键值 key=>value 用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

info = {'k1' : 'v1' ,  'k2' :  123 }
键 值 键 值

 

  • 索引取值
info = {
    "k1": 18,
    2: True,
    "k3": [
        11,
        [],
        (),
        22,
        33,
        {
            'kk1': 'vv1',
            'kk2': 'vv2',
            'kk3': (11,22),
        }
    ],
    "k4": (11,22,33,44)
}
v = info['k1']
print(v)
v = info[2]
print(v)
v = info['k3'][5]['kk3'][0]         ##多层嵌套的取值
print(v)

输出:

  18
  True
  11

 

  • del删除
info = {
    "k1": 18,                 ##被删除部分
    2: True,
    "k3": [
        11,
        [],
        (),
        22,
        33,
        {
            'kk1': 'vv1',     ##被删除部分
            'kk2': 'vv2',
            'kk3': (11,22),
        }
    ],
    "k4": (11,22,33,44)
}

输出:{2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}

 

  • for循环
info = {
    "k1": 18,
    2: True,
    "k3": [
        11,
        [],
        (),
        22,
        33,
        {
            'kk1': 'vv1',
            'kk2': 'vv2',
            'kk3': (11,22),
        }
    ],
    "k4": (11,22,33,44)
}

for item in info:               
    print(item)                     ##默认输出所有的key

for item in info.keys():
    print(item)                     ##输出所有的key
 
for item in info.values():
    print(item)                     ##输出所有的values

for item in info.keys():
    print(item,info[item])          ##输出所有的key,并使用索引同时输出key所对应的value

for k,v in info.items():
    print(k,v)                      ##同时取出key和value,分别赋值给k和v,然后输出

输出:

k1
2
k3
k4
k1
2
k3
k4
18
True
[11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
(11, 22, 33, 44)
k1 18
2 True
k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
k4 (11, 22, 33, 44)
k1 18
2 True
k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
k4 (11, 22, 33, 44)

 

二、python中字典的函数&方法

  内置函数

  内置方法

 

1.根据序列,创建字典,并指定统一的值

v = dict.fromkeys(["k1",123,"999"],123)     #前边的列表是所有的key, 后边的123是值,将分别赋给三个key,即三个key的value都是123
print(v)

输出:

 

2.根据Key获取值,key不存在时,可以指定默认值(None)

dic = {
    "k1": 'v1',
    "k2": 'v2'
}

# v = dic['k11']
# print(v)                           ##使用索引,当key 'k11' 不存在时就会报错,所以该方法有弊端

#v = dic.get('k11')
#print(v)                            ##使用get方法,当key不存在时会输出None

#v = dic.get('k11',123)
#print(v)                            ##get方法可以添加两个参数,当指定的key不存在时,get方法会将括号内的第二个参数赋给key,当key已经存在时,第二个参数将会失效

 

3.删除

  • 删除(用一个参数接收)
dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic.pop('k1')         ##将取出的k1的值赋给v
print(dic,v)

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic.pop('k11',90)     ##当指定的key(k11)存在时,指定的value(90)会失效,k11不存在时,v等于指定的value90
print(dic,v)

输出:

 

  • 删除(用两个参数接收)
dic = {
    "k1": 'v1',
    "k2": 'v2'
}
k,v = dic.popitem()    ##随机删除一对
print(dic,k,v)

输出:

 

 4 .设置值

已存在,不设置,获取当前key对应的值
不存在,设置,获取当前key对应的值
dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic.setdefault('k1','123')     ##当key存在时,后边指定的值会失效
print(dic,v)
v
= dic.setdefault('k11','123') print(dic,v)

输出:

 

5.更新(update)

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
dic.update({'k1': '111111','k3': 123})     ##已存在的更新,不存在的加上去
print(dic)
dic.update(k1=123,k3=345,k5="asdf")
print(dic)

输出:

 

三、补充

1.字符串

tempalte = "i am {name}, age : {age}"
#v = tempalte.format(name='alex',age=19)                ##和下面的方法效果相同
v = tempalte.format(**{"name": 'alex','age': 19})       ##加入两个**即可将字典加入 print(v)

输出:

 

2.字典

使用in时:

dic = {'k1' : 'v1' , 'k2' : 'v2' }

v = 'k1'  in   dic
print(v)     ##输出True

v = 'v1'  in   dic
print(v)     ##输出False

判断values时,使用v = 'v1'  in  dic.values()

 

3.布尔值

bool值只有 False(0) 和True(1) 两种

bool(...)经常用来判断真假

bool值为False常见的有:0 、None、空字符串、空字典、空列表、空元组其他都是True

 

posted @ 2018-11-18 23:24  Forever_lee  阅读(4661)  评论(0编辑  收藏  举报