一.定义与概念

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

举例:检索学生信息。

“<键><值>对”。

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

“键值对”例子

姓名和电话号码

用户名和密码

国家名称和首都等。

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

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

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

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

字典中的键不允许重复。

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

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

>>>Dcountry["中国"] '北京'

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

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

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

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

存取和访问方式不同

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

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

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

二.字典的操作

1.创建于删除

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

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

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

使用del删除整个字典

2.基本操作方法

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个随机字符的字符串,然后统计每个字符的出现次数。

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])#打印出排名前三的

Python—字典(当索引不好用时)的更多相关文章

  1. 字典:当索引不好用时 - 零基础入门学习Python025

    字典:当索引不好用时 让编程改变世界 Change the world by program 有天你想翻开牛津字典,查找"sadomasochism[ˌseɪdoʊ'mæsəkɪzəm]&q ...

  2. 字典:当索引不好用时2 - 零基础入门学习Python026

    字典:当索引不好用时2 让编程改变世界 Change the world by program 上节课我们学习到在一些情况下,比序列更实用的映射类型:字典.我们知道字典也有个关键符号就是大括号(也叫花 ...

  3. 【python学习笔记】4.字典:当索引不好用时

    [python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...

  4. python学习(四) 字典:当索引不好用时

    第四章 字典:当索引不好用时 4.1 字典的使用 字典的适用场景: 表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组: 存储文件修改时间,用文件名作为键: 数字电话/地址簿 4.2 创建和使用字典 ...

  5. Python基础--字典:当索引不好用时

    当列表或是元组的索引不能达到我们的目的时,我们想到了还有一种序列,即字典. 创建 字典 由多个键以及相应的值构成的键-值对组成. 键唯一.值能够不唯一 phonebook = {'xidada':'1 ...

  6. 零基础入门学习Python(25)--字典:当索引不好用时

    知识点 字典属于映射类型. 列表,元祖,字符串等属于序列类型 创建及访问字典 #创建一个字典 >>> dict1 = {'李宁':'一切皆有可能','耐克':'Just do it' ...

  7. python学习笔记之三:字典,当索引不好用时

    字典是python中唯一内建的映射类型.字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里.键可以是数字,字符串甚至是元组. 1. 创建和使用字典 字典可以通过下面的方式创建: phon ...

  8. 零基础入门学习Python(26)--字典:当索引不好用时2

    知识点 删除字典元素 能删单一的元素也能清空字典,清空只需一项操作. 显示删除一个字典用del命令,如下: >>> dict1 = {'a':1,'b':2,'c':3} >& ...

  9. python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出

    # 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(typ ...

随机推荐

  1. iOS 清理Xcode项目中没有使用到的图片资源和类文件

    接手到一个旧的项目,但是发现里面有太多的无用资源,包括升级app后,一些无用的图片资源并没有被删掉,导致app在打包成ipa包以后,文件变大.手边这个项目IM要更换成环信的IM,之前的一些旧的SDK, ...

  2. Yii中实现分页

    $criteria = new CDbCriteria(); // 查询字段 $criteria->select = 'id, name, create_time'; // 排序 $criter ...

  3. git找回本地误删的文件或文件夹

    一:首先,我们先用git status 看看工作区的变化 application/Admin/Conf/config.php 如果要恢复文件记住这个 application 如果要恢复文件夹记住这个工 ...

  4. 关于NPOI导出excel文件(xls和xlsx两种格式)提示格式不符的问题

    这两天在做导出excel文件的时候遇到这个问题 本来我导出的格式是xlsx格式的,但是下载得到的文件格式变成了xls, 一开始以为是返回的contenttype设置错了 return File(ms, ...

  5. Hadoop1.0 与Hadoop2.0

    Hadoop1.0的局限-MapReduce •扩展性 –集群最大节点数–4000 –最大并发任务数–40000 (当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增 ...

  6. For-each Loop,Index++ Loop , Iterator 那个效率更高

    平时在写Java/C# 程序的时候,会写很多的Loop 语句,for() 及 Iterator loop 及Java 8 的foreach Loop, 这些Loop 那种效率最高呢?写个小程序测试一下 ...

  7. 第9章 HBase操作

    目录 9.1 集群环境搭建 1.上传解压HBase安装包 2.hbase-env.sh文件配置 3.hbase-site.xml文件配置 4.regionservers文件配置 5.拷贝hbase到其 ...

  8. Hibernate-关系映射

    1.为什么用Hibernate框架: java程序数据保存的变化: * 内存存在:java基础中, 数据保存在内存中,只在内存中暂时存在 * 文件保存:有io/流之后,数据可以保存到文件中 * 数据库 ...

  9. 北京Uber优步司机奖励政策(1月8日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. P1563 玩具谜题

    P1563 玩具谜题 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: ...