Python字典是可变类型数据,可以存储任意对象,如字符串,数字,元组,列表等。

字典的创键

字典有键key和值value组成,使用键值对链接:,字典也称为关联数组或哈希表。

dict_person = {"name": "link", "age": 18}

注意:每个键和值使用:隔开,使用逗号进行隔开,整体放在花括号里面{},键必须独一无二,而且键必须是不可变数据类型,值则不必。

获取字典值

  • 使用中括号[key]获取值
  • dict.get("key")获取值
dict_person = {"name": "link", "age": 18}

print('dict_person["name"]', dict_person["name"])
print('dict_person.get("age")', dict_person.get("age"))

注意:key不存在时,使用get("key")返回None, 而使用[]直接报错。

获取字典的长度

dict_person = {"name": "link", "age": 18}
print("dict_person字典的长度是:", len(dict_person))

注意: 字典的长度其实就是多少个key

修改字典

class_dict = {"name": "张俊", "class": "三年一班"}

# 修改为 三年二班
class_dict["class"] = "三年二班"
print(class_dict)

注意: 修改字典值得时候,如果修改的键存在则是修改键对应的值,不存在则是增加新的键,值。

删除字典

  • pop(key) 删除指定键是key的条目
  • del 删除整个字典
  • clear 清空字典
  • del dict["key"] 删除指定键是key的条目
class_dict = {"name": "张俊", "class": "三年一班", "age": 18}

# 删除键是"class"的条目
del class_dict["class"]
# 也可以使用pop, 如果删除的键不存在直接报错
# class_dict.pop('class')
print(class_dict)
# 清空字典
class_dict.clear()
print(class_dict)
# 删除整个字典
del class_dict

字典内置方法

  • dict.fromkeys() 创建新字典,以seq作为键,val作为值
dict_1 = {}
dict_2 = dict_1.fromkeys("a", 11)
print(dict_2)
  • dict.keys() 列表形式返回字典所有的key
person = {"name": "张三", "age": 18, "adress": "武当山"}

print(person.keys())
  • dict.values() 列表形式返回字典所有的values
person = {"name": "张三", "age": 18, "adress": "武当山"}
print(person.values())
  • dict.items() 返回可遍历键,值
person = {"name": "张三", "age": 18, "adress": "武当山"}

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

后续会讲解数据类型的深拷贝和浅拷贝。

dict的使用的更多相关文章

  1. tuple放入dict中

    tuple放入dict中是否可以正常运行 # 将tuple放入dict中 a = ('AI','Kobe','Yao') b = ('AI',['Kobe','Yao']) dict1 = {'a': ...

  2. redis数据结构存储Dict设计细节(redis的设计与实现笔记)

    说到redis的Dict(字典),虽说算法上跟市面上一般的Dict实现没有什么区别,但是redis的Dict有2个特殊的地方那就是它的rehash(重新散列)和它的字典节点单向链表. 以下是dict用 ...

  3. python list dict 去重的两种方式

    def dedupe(items, key=None): seen = set() for item in items: val = item if key is None else key(item ...

  4. list,tuple,dict,set常用方法

    Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...

  5. python dict clear只能删除一层,不能够递归删除。

    void PyDict_Clear(PyObject *op) { dictobject *mp; dictentry *ep, *table; int table_is_malloced; Py_s ...

  6. Python中内置数据类型list,tuple,dict,set的区别和用法

    Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...

  7. python第一天 - dict

    dict key-value集合. d = { ': 'a', ': 'b', ': 'c' } (一).获取集合长度:len(d) = 3(二).获取值: 方式一:d[key];例:d['1'] = ...

  8. python利用dict模拟switch

    pytho本身并未提供switch语句,但可以通过dict来模拟switch, #方法1 def add(x,y): return x+y def dec(x,y): return x-y def m ...

  9. python-list tuple dict set

    1:删除一个列表末尾的元素 pop方法 >>> a [1, 'Jack', 2, 3, 2] >>> a.pop() >>> a [1, 'Jac ...

  10. python基础之dict、set及字符

    python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...

随机推荐

  1. Qt Installer Framework翻译(3-1)

    初始化安装 下图说明了安装应用程序的默认工作流程: 本节使用在macOS上运行的Your Application Installer示例来说明默认工作流程.安装程序具有本地化外观,并可感知每个受支持的 ...

  2. java面试| 线程面试题集合

    集合的面试题就不罗列了,基本上在深入理解集合系列已覆盖 「 深入浅出 」java集合Collection和Map 「 深入浅出 」集合List 「 深入浅出 」集合Set 这里搜罗网上常用线程面试题, ...

  3. 【Java并发基础】管程简介

    前言 在Java 1.5之前,Java语言提供的唯一并发语言就是管程,Java 1.5之后提供的SDK并发包也是以管程为基础的.除了Java之外,C/C++.C#等高级语言也都是支持管程的. 那么什么 ...

  4. python练习-8.12

    注:本代码是<python核心编程(第二版)>的第八章8-12的练习题的代码实现. 完成的功能:用户给出起始和结束的数字后给出一个下面的表格,分别显示出两个数字间所有整型的十进制.二进制. ...

  5. doT 这个模板 是怎么实现的?(1)

  6. 什么是C/S结构,其和B/S有什么区别很联系呢

    什么是C/S结构,其和B/S有什么区别很联系呢 原地址:https://zhidao.baidu.com/question/12962713.html C/S结构即服务器/客户机结构.C/S结构通常采 ...

  7. Potplay视频播放画面扭曲

    Potplayer是一款非常好用的视频播放器,解码快,功耗低同时相对较好支持保真加速,但是,在使用过程中出现了如下的所谓“Bug” 经过摸索发现是播放器自动检测到此视频是360视频(不明觉厉,貌似需要 ...

  8. mybatis generator cmd 终端命令 生成dao model mapper

    mybatis generator cmd 终端命令 生成dao model mapper 文件包下载 mybatis-generator-core-1.3.2.jar 下载地址:https://gi ...

  9. 线程池技术之:ThreadPoolExecutor 源码解析

    java中的所说的线程池,一般都是围绕着 ThreadPoolExecutor 来展开的.其他的实现基本都是基于它,或者模仿它的.所以只要理解 ThreadPoolExecutor, 就相当于完全理解 ...

  10. windows配置Lua开发环境

    官网上下载的不靠谱,很多库不能用,你如 require "socket" 如果没有vc那些编译也麻烦,摸索了很久,直接下载安装文件安装即可: 安装这两个就行: 先安装C++2005 ...