一、什么是字典?

字典是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. Subsets —— LeetCode

    Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...

  2. CodeForces 591A

    题目链接: http://codeforces.com/problemset/problem/591/A 题意: a,b两个相距L距离,两个分别以p,q速度从左右两个端点出发,每次相遇后,又以原来的速 ...

  3. Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

    Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一 ...

  4. html5---webworker多线程

    javascript本身就是一个单线程的语言,一开始它的出现是为了简单的网页设计,设计者并没有考虑到多线程的问题,要知道,线程的开销是非常昂贵的.但是随着web开发的潮流化,javascript不是仅 ...

  5. openStack CentOS虚拟桌面iptables初始化配置

  6. segment

    1.segmentedControlStyle 设置segment的显示样式. typedef NS_ENUM(NSInteger, UISegmentedControlStyle) { UISegm ...

  7. 深入剖析Java中的自动装箱和拆箱过程

    深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...

  8. geektool--一款很geek的工具

    2016/12/18 今天尝试一款很geek的工具 geektool 听名字就超级geek有木有 get it geektool website 从官网直接下载app,一键傻瓜式安装. use it ...

  9. boost库在工作(15)绑定器与函数对象之三

    前面已经可以优美地解决两个参数的函数给算法for_each调用了,但是又会遇到这样的一种情况,当需要三个参数或者三个以上的参数给算法for_each调用呢?从STL里的绑定器bind1st,显然是不行 ...

  10. 如何使用Valgrind memcheck工具进行C/C++的内存泄漏检测

      系统编程中一个重要的方面就是有效地处理与内存相关的问题.你的工作越接近系统,你就需要面对越多的内存问题.有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦.所以,在实践中会用到很多工 ...