Python--字典

字典

字典是什么

字典是一种存储 键值对 的结构

        把 键(key) 和 值(value) 进行一个一对一的映射, 然后就可以根据键, 快速找到值。

学号和同学就是最明显的键值对结构


创建字典

创建一个空的字典. 使用 { } 表示字典.

a = { }

b = dict()

print(type(a))

print(type(b))

  • 也可以在创建的同时指定初始值
  • 键值对之间使用 , 分割, 键和值之间使用 : 分割. (冒号后面推荐加一个空格).
  • 使用 print 来打印字典内容
student = { 'id': 1, 'name': 'zhangsan' }

print(student)

  • 为了代码更规范美观, 在创建字典的时候往往会把多个键值对, 分成多行来书写.
student = {
    'id': 1,
    'name': 'zhangsan'

}
  • 最后一个键值对, 后面可以写 , 也可以不写.
student = {
    'id': 1,
    'name': 'zhangsan',
}

查找 key

  • 使用 in 可以判定 key 是否在 字典 中存在. 返回布尔值

student = {
    'id': 1,
    'name': 'zhangsan',
}

print('id' in student)

print('score' in student)

  •  使用 [ ] 通过类似于取下标的方式, 获取到元素的值. 只不过此处的 "下标" 是 key. (可能是整数, 也 可能是字符串等其他类型).
student = {
    'id': 1,
    'name': 'zhangsan',
}

print(student['id'])

print(student['name'])

 

  • 如果 key 在字典中不存在, 则会抛出异常

​
student = {
    'id': 1,
    'name': 'zhangsan',
}

print(student['score'])

​


 新增/修改元素

                使用 [ ] 可以根据 key 来新增/修改 value.

  • 如果 key 不存在, 对取下标操作赋值, 即为新增键值对
student = {
    'id': 1,
    'name': 'zhangsan',
}

student['score'] = 90

print(student)

  • 如果 key 已经存在, 对取下标操作赋值, 即为修改键值对的值.  
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80

}

student['score'] = 90

print(student)


删除元素

  • 使用 pop 方法根据 key 删除对应的键值对.
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80

}

student.pop('score')

print(student)


遍历字典元素

  • 直接使用 for 循环能够获取到字典中的所有的 key, 进一步的就可以取出每个值了.
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80

}

for key in student:
    print(key, student[key])


取出所有 key 和 value

  • 使用 keys 方法可以获取到字典中的所有的 key
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80

}

print(student.keys())

dict_keys 是一个特殊的类型, 专门用来表示字典的所有 key. 大部分元组支持的操作对于

dict_keys 同样适用.


  • 使用 values 方法可以获取到字典中的所有 value

student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80

}

print(student.values())

这里的dict_values 也是一个特殊的类型, 和 dict_keys 类似.

  • 使用 items 方法可以获取到字典中所有的键值对.
student = {
    'id': 1,
    'name': 'zhangsan',
    'score': 80

}

print(student.items())


合法的 key 类型

        不是所有的类型都可以作为字典的 key.

        字典本质上是一个 哈希表, 哈希表的 key 要求是 "可哈希的", 也就是可以计算出一个哈希值.

  • 可以使用 hash 函数计算某个对象的哈希值.
  • 但凡能够计算出哈希值的类型, 都可以作为字典的 key.
print(hash(0))

print(hash(3.14))

print(hash('hello'))

print(hash(True))

print(hash(()))           # ( ) 是一个空的元组

  • 列表无法计算哈希值.
  • 字典也无法计算哈希值
    print(hash([1, 2, 3]))
    print(hash({ 'id': 1 }))

总的来说

字典也是一个常用的结构. 字典的所有操作都是围绕 key 来展开的.

需要表示 "键值对映射" 这种场景时就可以考虑使用字典.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值