Python基础教程:字典(当索引不好用时)

枫铃3年前 (2021-09-30)Python252

一.定义与概念

1.字典是针对非序列集合而提供的一种数据类型

举例:检索学生信息。

“<键><值>对”。

键(即身份证号码) 值(即学生信息)。

“键值对”例子

姓名和电话号码

用户名和密码

国家名称和首都等。

通过任意键信息查找一组数据中值信息的过程叫映射,Python语言中通过字典实现映射。

Python语言中的字典可以通过大括号{ }建立,建立模式如下: {<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>} 其中,键和值通过冒号连接,不同键值对通过逗号隔开。 字典是键值对的无序可变集合。

字典中的每个元素包含两部分:键和值,向字典添加一个键的同时,必须为该键增添一个值。

字典中的键可以为任意不可变数据,比如整数、实数、复数、字符串、元组等等。

字典中的键不允许重复。

Dcountry={ "中国":"北京","美国": "华盛顿","法国":"巴黎"}
print (Dcountry)

#结果:
{'法国':'巴黎','美国':'华盛顿','中国': '北京'}

字典打印出来的顺序与创建之初的顺序不同,这不是错误。字典是集合类型的延续,各个元素并没有顺序之分。

字典主要的用法是查找与特定键相对应的值,通过索引符号来实现。

Dcountry["中国"] '北京'

一般来说,字典中键值对的访问模式如下,采用中括号格式: <值> = <字典变量>[<键>] 字典中对某个键值的修改可以通过中括号的访问和赋值实现:

Dcountry["中国"]='大北京'

print(Dcountry) {'中国': '大北京', '法国': '巴黎', '美国': '华盛顿'}

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

存取和访问方式不同

键的类型不同 序列类型只能用数字类型的键(下标) 字典类型可以用其他对象类型作键

排列方式不同 序列类型保持了元素的相对关系 而字典中的数据是无序排列的

映射方式不同 序列类型通过地址映射到值 字典类型通过键直接映射到值

二.字典的操作

1.创建于删除

使用=将一个字典赋值给一个变量

使用内置函数dict()利用已有数据创建字典

使用dict根据给定的键-值对创建字典 以给定内容为键,创建值为空的字典(fromkeys)

使用del删除整个字典

2.基本操作方法

函数和方法描述<d>.keys()返回所有的键信息<d>.values()返回所有的值信息<d>.items()返回所有的键值对<d>.get(<key>,<default>)键存在则返回相应值,否则返回默认值;键存在则返回相应值,同时删除键值对,<d>.pop(<key>,<default>)否则返回默认值<d>.popitem()随机从字典中取出一个键值对,以元组(key, value)形式返回<d>.clear()删除所有的键值对del <d>[<key>]删除字典中某一个键值对<key> in <d>如果键在字典中返回True,否则返回False

3.元素的读取

以键作为下标可以读取字典元素,若键不存在则抛出异常

使用字典对象的get方法获取指定键对应的值,并且可以在键不存在的时候返回指定值。

使用字典对象的items方法可以返回字典的键、值对列表

使用字典对象的keys方法可以返回字典的键列表

使用字典对象的values方法可以返回字典的值列表

4.元素的添加与修改

当以指定键为下标为字典赋值时,若键存在,则可以修改该键的值;若不存在,则表示添加一个键、值对。

使用字典对象的update方法将另一个字典的键、值对添加到当前字典对象

使用del删除字典中指定键的元素

使用字典对象的clear方法来删除字典中所有元素

使用字典对象的pop方法删除并返回指定键的元素

使用字典对象的popitem方法删除并返回字典中的任意一个元素

5.字典元素的遍历

与其他组合类型一样,字典可以通过for…in语句对其元素进行遍历,基本语法结构如下:

for <变量名> in <字典名>: 语句块

for key in Dcountry:

	print(key)

中国

美国

法国

遍历字典的键

key for key in dictionaryName.keys():
        print(key)

遍历字典的值

value for value in dictionaryName.values():
        print(value)

遍历字典的项

for item in dicitonaryName.items():
        print(item)

遍历字典的键值对

key-value for key,value in dicitonaryName.items():
         print(key, value)

字典是实现键值对映射的数据结构,请理解如下基本原则:

字典是一个键值对的集合,该集合以键为索引,一个键信息只对应一个值信息;

字典中元素以键为索引访问;

字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。

三.操作实例

1.首先生成包含1000个随机字符的字符串,然后统计每个字符的出现次数。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''

import string
import random

x = string.ascii_letters
y = ''.join((random.choice(x) for i in range(1000)))
d = dict()
for ch in y:
    d[ch] = d.get(ch,0)+1
dd = sorted(d.items(), key=lambda item:item[1], reverse=True)#排序
print(dd[:3])#打印出排名前三的

四.字典与json的异同

发现字典和web前端中的json有点像。接下来比较一下两者的异同。

字典结构:
在这里插入图片描述
json数据形式:

{
    "studentInfo":
    {
        "id":123456,
        "stu_name":"Dorra"
    }
}

从形式上看,都是“Key:Value”的形式。

但是从本质上讲,字典是一种数据结构,而json是一种格式;字典有很多内置函数,有多种调用方法,而json是数据打包的一种格式,并不像字典具备操作性,并且是格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为key或者值的边界符号,不能使用单引号,而且“key”必须使用边界符(双引号),但字典就无所谓了。

Python中提供了json.load()转换函数,方便json数据的调用。
在这里插入图片描述

相关文章

Python find() 方法

Python find() 方法从字符串中找出某个子字符串第一个匹配项的索引位置,该方法与 index() 方法一样,只不过如果子...

python实现进度条的3种方式

python实现进度条的3种方式

1. 最普通的方法:...

RS(纠删码)技术浅析及Python实现

RS(纠删码)技术浅析及Python实现

前言 在Ceph和RAID存储领域,RS纠删码扮演着重要的角色,纠删码是经典的时间换空间的案例,通过更多的CPU计算...

python中,如何将多行进行输出,同时将行尾的换行符去掉

比如我要输出字符串的常量,字符串常量要输出多行,该怎么解决呢 1.可以通过三引号("""...

python 使用进程池Pool进行并发编程

进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如...

Python 爬虫使用固定代理IP

Python 爬虫使用固定代理IP

购买的固定代理IP一般都需要账号密码, 在网上找了几个使用方法,但是都报错,所以,就想了这个笨办法&#...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。