字典以及字典的使用

列表可以存储任意数据类型,但是一般情况下,我们都存储单一数据类型;
这个列表里的每一个元素到底代表的是什么?
列表只能存储值,但是无法对值进行描述;
字典不仅可以保存值,还能对值进行描述;
使用大括号来表示一个字典,不仅有值 value,还有值的描述 key;
字典里的数据都是以键值对 key-value 的形式保留的;
key 和 value 之间使用冒号 : 来连接;
多个键值对之间使用逗号,来分隔;

person = {'name': 'zhangsan',
          'age': 18,
          'Chinese': 95,
          'English': 89,
          'gym': 90,
          'height': 180,
          'weight': 150
          }

字典使用注意事项

1.字典里的 key 不允许重复,如果 key 重复了,后一个 key 对应的值会覆盖前一个
2.字典里的 value 可以是任意数据类型,但是 key 只能使用不可变数据类型,一般使用字符串

person = {'name': 'zhansan',
          'age': 18,
          'height': 180,
          'age':20, #  会替换上一个age的值
          'isPass':True, # 值可以是布尔值
          'hobbies':['唱','跳','篮球','rap'],# 也可以是列表
          4:'good',
          ('yes','hello'):100,
          # ['ok','no']:'hi'   # key 只能是不可变数据类型
          }
print(person)

字典的增删改

person = {'name': 'zhangsan', 'age': 18,'addr':'襄阳'}
print(person['name'])

# 直接使用 key 可以修改对应的 value
person['name'] = 'lisi'

# 如果 key 存在,是修改 key 对应的value
# 如果 key 在字典里不存在,会往字典里添加一个新的 key-value
person['gender'] = 'female'
print(person)

# 把 name 对应的键值对删除了,执行结果是被删除的 value
x = person.pop('name')
print(x) #lisi
print(person)

# popitem 删除一个元素,结果是被删除的这个元素组成的键值对
result = person.popitem()
print(result)  # ('gender', 'female')
print(person)

del person['addr']
print(person)

person.clear()  #用来清空一个字典
print(person) # {}

字典的查询

person = {'name': 'zhangsan', 'age': 18,'x':'y'}

# 查找数据(字典的数据在保存是,是无序的)
print(person['name'])  # 使用 key 获取到对应的 value
# print(person['height']) # 如果要查找的 key 不存在,会直接报错

# 需求:获取一个不存在的 key 时,不报错,如果这个 key 不存在,使用默认值
# 使用字典的 get 方法,如果 key 不存在会返回默认None
print(person.get('height')) # None
# 如果根据 key 获取不到 value,使用给定的默认值
print(person.get('gender','female'))
print(person.get('name','lisi'))  #zhangsan
print(person)

# x = 'age'
# print(person[x])
# print(person['x'])

字典的遍历

person = {'name': 'zhangsan', 'age': 18, 'height': '180cm'}

# 特殊在列表和元祖是一个单一的数据,但是字典是键值对的形式

# 第一种遍历方式:直接for...in循环字典
for x in person:
    print(x, '=', person[x])

# 第二种方式:获取到所有的key,然后再遍历key,根据key获取value
# print(person.keys())   # dict_keys(['name', 'age', 'height'])
for k in person.keys():
    print(k, '=', person[k])

# 第三种方式:获取到所有value
for v in person.values():
    print(v)

# 第四种方式:
# print(person.items())  # [('name', 'zhangsan'), ('age', 18), ('height', '180cm')]
for item in person.items():  # 列表里的元素是元祖,把元祖当成整体遍历
    print(item[0], '=', item[1])

for k,v in person.items():
    print(k,'=',v)