【Python】基本数据类型--字典

 一、定义

字典是无序的键值对集合

字典使用大括号{ }包围,每个键值对之间用逗号分隔,每个键与值之间用冒号分隔

字典是动态的,可以随时添加或删除元素

字典中键不允许出现重复元素,值允许出现重复元素

二、创建

  • 通过大括号填充键值对创建
  • 通过构造方法dict()创建
  • 通过字典推导式创建
# 大括号填充键值对
dc1 = {}
print(dc1)            # 输出:{}
dc1 = {'name': 'Andy', 'age': 18}
print(dc1)            # 输出:{'name': 'Andy', 'age': 18}

# 构造方法dict()创建
dc2 = dict()
print(dc2)            # 输出:{}
dc2 = dict(name = 'Andy', age = 18)    # 关键字参数赋值
print(dc2)            # 输出:{'name': 'Andy', 'age': 18}
dc2 = dict((('name', 'Andy'), ('age', 18)))     
print(dc2)            # 输出:{'name': 'Andy', 'age': 18}

# 字典推导式创建
dc3 = {k: v for k, v in {('name', 'Andy'), ('age', 18)}}
print(dc3)            # 输出:{'name': 'Andy', 'age': 18}

三、字典使用

1、操作元素

写法:dict[key] = value

键不存在时添加元素,键已经存在时修改元素

dc = {'name': 'Andy', 'age': 18}
dc['age'] = 20
print(dc)            # 输出:{'name': 'Andy', 'age': 20}
dc['gender'] = 'male'
print(dc)            # 输出:{'name': 'Andy', 'age': 20, 'gender': 'male'}

2、嵌套字典

字典的值可以是字典格式

dc = {'name': 'Andy', 'age': 18, 'course': {'python': 90, 'java': 80}}
print(dc['course']['python'])        # 输出:90
dc['course']['java'] = 100
print(dc)    # 输出:{'name': 'Andy', 'age': 18, 'course': {'python': 90, 'java': 100}}

四、字典方法 

1、keys()

返回由字典键组成的一个新视图对象

写法:dict.keys()

入参:无

返回:字典键组成的一个新视图对象

dc = {'name': 'Andy', 'age': 18}
print(dc.keys())        # 输出:dict_keys(['name', 'age'])

# 遍历查看所有的键
for i in dc.keys():
    print(i)            # 输出:name
                        # 输出:age
# 将试图对象转化为列表
print(list(dc.keys()))  # 输出:['name', 'age']

2、values()

返回由字典值组成的一个新视图对象

写法:dict.values()

入参:无

返回:字典值组成的一个新视图对象

dc = {'name': 'Andy', 'age': 18}
print(dc.values())        # 输出:dict_values(['Andy', 18])

# 遍历查看所有的键
for i in dc.values():
    print(i)              # 输出:'Andy'
                          # 输出:18
# 将试图对象转化为列表
print(list(dc.values()))  # 输出:['Andy', 18]

3、items()

返回由字典项(键值对)组成的一个新视图对象

写法:dict.items()

入参:无

返回:字典项(键值对)组成的一个新视图对象

dc = {'name': 'Andy', 'age': 18}
print(dc.items())        # 输出:dict_items([('name', 'Andy'), ('age', 18)])

# 遍历查看所有的键
for i in dc.items():
    print(i)              # 输出:('name', 'Andy')
                          # 输出:('age', 18)
# 将试图对象转化为列表
print(list(dc.items()))  # 输出:[('name', 'Andy'), ('age', 18)]

4、get()

获取指定key对应的value值

写法:dict.get(key)

入参:字典的键key

返回:如果key存在于字典中,返回key对应的value值。如果key不存在于字典中,返回None

目标元素不存在也不会引发KeyError

dc = {'name': 'Andy', 'age': 18}
print(dc.get('name'))            # 输出:Andy
print(dc.get('course'))          # 输出:None

5、update()

使用来自dict的键值对更新字典,覆盖原有的键和值

写法:dict.update(dict)

入参:字典对象dict

返回:None

dc = {'name': 'Andy', 'age': 18}
print(dc.update({'age': 20}))   # 输出:None
print(dc)                       # 输出:{'name': 'Andy', 'age': 20}
dc.update({'course':['python', 'java']})
print(dc)            # 输出:{'name': 'Andy', 'age': 20, 'course': ['python', 'java']}

6、pop()

删除指定key的键值对,并返回对应value值

写法:dict.pop(key)

入参:key

返回:如果key存在于字典中,返回key对应的value值

如果key不存在于字典中,则引发KeyError错误

dc = {'name': 'Andy', 'age': 18}
print(dc.pop('age'))    # 输出:18
print(dc)               # 输出:{'name': 'Andy'}
dc.pop('course')        # 输出:KeyError: 'course'

五、字典推导式 

可以从任何以键值对作为元素的可迭代对象中构建出字典

data = [('a', 1), ('b', 2), ('c', 3)]
# for循环创建字典
dc1 = {}
for k, v in data:
    if v > 1:
        dc1[k] = v ** 2
print(dc1)          # 输出:{'b': 4, 'c': 9}

# 字典推导式创建字典
dc2 = {k:v**2 for k, v in data if v > 1}
print(dc2)          # 输出:{'b': 4, 'c': 9}
# 无else时,if在for循环之后
data = {'a': 1, 'b': 2, 'c': 3}
# for循环创建字典
dc1 = {}
for k, v in data.items():
    if v > 2:
        dc1[k] = v ** 2
    else:
        dc1.update({k:v})
print(dc1)          # 输出:{'a': 1, 'b': 2, 'c': 9}

# 字典推导式创建字典
dc2 = {k:v**2 if v > 2 else v for k, v in data.items()}
print(dc2)          # 输出:{'a': 1, 'b': 2, 'c': 9}
# 有else时,if…else在for循环之前

猜你喜欢

转载自blog.csdn.net/Yocczy/article/details/132403574