一、什么是字典?

字典是Python语言中唯一的映射类型。

映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。

字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。

字典类型与序列类型的区别:

1.存取和访问数据的方式不同。
2.序列类型只用数字类型的键(从序列的开始按数值顺序索引);
3.映射类型可以用其他对象类型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直4.接或间接地和存储数据值相关联。
5.映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。
6.映射类型用键直接“映射”到值。

字典是Python中最强大的数据类型之一。

二、字典的操作

# 字典的添加、删除、修改操作
dict = {"a": "apple", "b": "banana", "c": "grape", "d": "orange"}
dict["a"] = "watermelon" # 修改key:"a"对应的value:”apple"改为“watermelon”
del (dict["a"]) # 万能删除操作
dict["c"] = "grapefruit" # 修改key对应value
print(dict.pop("b")) # 取出一个key:"b",并从dict中移除他
dict.clear() # 清除字典
# 字典的遍历
dict1 = {"a": "apple", "b": "banana", "c": "grape", "d": "orange"}
for k in dict1:
print("dict[%s]=" % k, dict1[k]) # 字典items()的使用
dict2 = {"a": "apple", "b": "banana", "c": "grape", "d": "orange"}
print(dict2.items()) # 每个元素是一个key和value组成的元组,以列表的方式输出 # 调用items()实现字典的遍历
dict3 = {"a": "apple", "b": "banana", "c": "grape", "d": "orange"}
for (k, v) in dict3.items():
print("dict3[%s]=" % k, v) # 使用列表、字典作为字典的值
dict4 = {"a": ("apple",), "bo": {"b": "banana", "o": "orange"}, "g": ["grape", "grapefruit"]}
print(dict4["a"])
print(dict4["a"][0])
print(dict4["bo"])
print(dict4["bo"]["o"])
print(dict4["g"])
print(dict4["g"][1]) dict5 = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
# 输出key的列表
print(dict5.keys())
# 输出value的列表
print(dict5.values())
# 每个元素是一个key和value组成的元组,以列表的方式输出
print(dict5.items()) # 字典中元素的获取方法
dict6 = {"a": "apple", "b": "banana", "c": "grape", "d": "orange"}
print(dict6)
print(dict6.get("c", "apple"))
print(dict6.get("e", "apple")) # get()的等价语句
D = {"key1": "value1", "key2": "value2"}
if "key1" in D:
print(D["key1"])
else:
print("None") # 字典的更新
dict7 = {"a": "apple", "b": "banana"}
print(dict7)
dict13 = {"c": "grape", "d": "orange"}
dict7.update(dict13)
print(dict7)
# dpate()的等价语句
D = {"key1": "value1", "key2": "value2"}
E = {"key3": "value3", "key4": "value4"}
for k in E:
D[k] = E[k]
print(D)
# 字典E中含有字典D中的key
D = {"key1": "value1", "key2": "value2"}
E = {"key2": "value3", "key4": "value4"}
for k in E:
D[k] = E[k]
print(D)
# 设置默认值
dict7 = {}
dict7.setdefault("a")
print(dict7)
dict7["a"] = "apple"
dict7.setdefault("a", "default")
print(dict7) # 调用sorted()排序
dict7 = {"a": "apple", "b": "grape", "c": "orange", "d": "banana"}
print(dict7) # 按照key排序
print(sorted(dict7.items(), key=lambda d: d[0])) # 按照value排序
print(sorted(dict7.items(), key=lambda d: d[1])) # 字典的浅拷贝
dict7 = {"a": "apple", "b": "grape"}
dict10 = {"c": "orange", "d": "banana"}
dict11 = dict7.copy()
print(dict10) # 字典的深拷贝
import copy dict7 = {"a": "apple", "b": {"g": "grape", "o": "orange"}}
dict8 = copy.deepcopy(dict7)
dict9 = copy.copy(dict7)
dict8["b"]["g"] = "orange"
print(dict7)
dict9["b"]["g"] = "orange"
print(dict7)

、使用字典的注意事项

1、不能允许一键对应多个值;
2、键必须是可哈希的。

Ppthon基础学习之Dict的更多相关文章

  1. C#/.NET 基础学习

    初识C# C#是微软公司发布的面向对象的.运行于.NET Framework之上的高级程序设计语言.与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NE ...

  2. D03——C语言基础学习PYTHON

    C语言基础学习PYTHON——基础学习D03 20180804内容纲要: 1 函数的基本概念 2 函数的参数 3 函数的全局变量与局部变量 4 函数的返回值 5 递归函数 6 高阶函数 7 匿名函数 ...

  3. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  4. Python3.x:基础学习

    Python3.x:基础学习 1,Python有五种标准数据类型 1.数字 2.字符串 3.列表 4.元组 5.字典 (1).数字 数字数据类型存储数字值.当为其分配值时,将创建数字对象. var1 ...

  5. Python web框架 Tornado(一)基础学习

    概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...

  6. (一)python基础学习

    根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...

  7. Python入门基础学习(函数)

    Python基础学习笔记(三) 函数的概念: 所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用 函数的使用包含两个步骤: 1.定义函数 --封装独立的功能 2.调用函数 --享受 ...

  8. Python入门基础学习(列表/元组/字典/集合)

    Python基础学习笔记(二) 列表list---[ ](打了激素的数组,可以放入混合类型) list1 = [1,2,'请多指教',0.5] 公共的功能: len(list1) #/获取元素 lis ...

  9. Python入门基础学习(环境安装/字符串)

    Python基础学习笔记(一) 编译性语言与解释性语言: 编译性语言:读完代码再执行,一般会生成一个文件,如C语言会生成一个.h的文件给计算机执行 如:C,C++,C#,Java,Go 解释性语言:读 ...

随机推荐

  1. HDOJ(HDU) 2143 box(简单的多次判断-用的卫条件)

    Problem Description One day, winnie received a box and a letter. In the letter, there are three inte ...

  2. Android开发必知--自定义Toast提示

    开发过Android的童鞋都会遇到一个问题,就是在打印Toast提示时,如果短时间内触发多个提示,就会造成Toast不停的重复出现,直到被触发的Toast全部显示完为止.这虽然不是什么大毛病,但在用户 ...

  3. traits编程技法

    看了<stl源码剖析>中关于traits的部分,由于对模板还不是很熟悉,就看了一下还未完工的C++ Template 进阶指南 ,感觉收获很大,推荐一下. 在使用迭代器时,为了知道它的相应 ...

  4. errno与perror

    很多系统函数在错误返回时将错误原因记录在libc定义的全局变量errno中,每种错误原因对应一个错误码,请查阅errno(3)的Man Page了解各种错误码,errno在头文件errno.h中声明, ...

  5. pl sql developer登陆界面找不到oracle数据库选项

    window 64位的操作系统 装的数据库win64_11gR2的数据库,PL SQL是PLSQL Developer 7.1.5最后是下载了一个instantclient_11_2包将你数据库安装路 ...

  6. .NET中的程序集(Assembly)

    在.NET 中,新引入了一个程序集的概念,就是指经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为.dll,或者是.exe的格式,但是要注意,它们跟普通意 ...

  7. base64 小测试:

    base64工作原理:Base64是MIME邮件中常用的编码方式之一.它的主要思想是将输入的字符串或数据编码成只含有{'A'-'Z', 'a'-'z', '0'-'9', '+', '/'}这64个可 ...

  8. 【protobuf进阶】读取proto实体里的extensionObject对象的方法

    //设置扩展对象 ProtoBuf.Extensible.AppendValue //读取扩展对象 ProtoBuf.Extensible.GetValue 最近通过C#的TcpClient调用jav ...

  9. Jinja2模版语言自定义filter的使用

    Jinja2模版语言,自带有一些filter,能够在前端的模版中控制数据按照相应的方式显示.比如以下两种filter,分别能在前端控制数字的近似精度显示和根据字符串长度补齐: round(value, ...

  10. 改写URL的查询字符串QUERY_STRING(转)

    查询字符串是指URL请求中“问号”后面的部分.比如,http://www.nowamagic.net/?foo=bar中粗体部分就是查询字符串,其中变量名是foo,值是bar. 1. 利用QSA转换查 ...