Python3教程
+ -

Python3 字典dict

2019-09-09 11 0

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号( : )分割,每个对之间用逗号( , )分割,整个字典包括在花括号( {})
,格式如下所示:

d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个简单的字典实例:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

也可如此创建字典:

dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };

访问字典里的值

把相应的键放入到方括号中,如下实例:

#!/usr/bin/python3
dict = {'Name': 'bytekits', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])

以上实例输出结果:

dict['Name']:  bytekits
dict['Age']:  7

如果用字典里没有的键访问数据,会输出错误如下:

#!/usr/bin/python3
dict = {'Name': 'bytekits', 'Age': 7, 'Class': 'First'};
print ("dict['Alice']: ", dict['Alice'])

以上实例输出结果:

Traceback (most recent call last):
  File "test.py", line 5, in <module>
print ("dict['Alice']: ", dict['Alice'])
KeyError: 'Alice'

修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

#!/usr/bin/python3
dict = {'Name': 'bytekits', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8;   # 更新 Age
dict['School'] = "字节流"  # 添加信息
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

以上实例输出结果:

dict['Age']:  8
dict['School']:  字节流

删除字典元素

能删单一的元素也能清空字典,清空只需一项操作。

显示删除一个字典用del命令,如下实例:

#!/usr/bin/python3
dict = {'Name': 'bytekits', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键 'Name'
dict.clear() # 清空字典
del dict # 删除字典
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

但这会引发一个异常,因为用执行 del 操作后字典不再存在:

Traceback (most recent call last):
  File "test.py", line 9, in <module>
print ("dict['Age']: ", dict['Age'])
TypeError: 'type' object is not subscriptable

注 :del() 方法后面也会讨论。

字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

#!/usr/bin/python3
dict = {'Name': 'bytekits', 'Age': 7, 'Name': '小字节流'}
print ("dict['Name']: ", dict['Name'])

以上实例输出结果:

dict['Name']:  小字节流

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:

#!/usr/bin/python3
dict = {['Name']: 'bytekits', 'Age': 7}
print ("dict['Name']: ", dict['Name'])

以上实例输出结果:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
dict = {['Name']: 'bytekits', 'Age': 7}
TypeError: unhashable type: 'list'

字典内置函数&方法

Python字典包含了以下内置函数:

  • len(dict) 计算字典元素个数,即键的总数。

    >>> dict = {'Name': 'bytekits', 'Age': 7, 'Class': 'First'}
    >>> len(dict)
    3
    
  • str(dict) 输出字典,以可打印的字符串表示。

    >>> dict = {'Name': 'bytekits', 'Age': 7, 'Class': 'First'}
    >>> str(dict)
    "{'Name': 'bytekits', 'Class': 'First', 'Age': 7}"
    
  • type(variable)
    返回输入的变量类型,如果变量是字典就返回字典类型。

    >>> dict = {'Name': 'bytekits', 'Age': 7, 'Class': 'First'}
    >>> type(dict)
    <class 'dict'>
    

Python字典包含了以下内置方法:

序号 函数及描述
1 radiansdict.clear() 删除字典内所有元素
2 radiansdict.copy() 返回一个字典的浅复制
3 radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
5 key in dict 如果键在字典dict里返回true,否则返回false
6 radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
7 radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表
8 radiansdict.setdefault(key,default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里
10 radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表
11 pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12 popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)。

0 篇笔记 写笔记

Redis INCR key
Redis INCR 命令用于将键(key)的整数值加1,如果键(key)不存在,则在执行操作之前将其设置为0,如果键包含错误类型的值或包含不能表示为整数的字符串,则返回错误,此操作仅限于64位带符号整数。INCR - 返回值整数回复,递增后的键值。INCR - 语法以下是Redis INCR 命令......
C# 索引器(Indexer)
索引器(Indexer) 允许一个对象可以像数组一样被索引。当您为类定义一个索引器时,该类的行为就会像一个 虚 拟数组(virtualarray) 一样。您可以使用数组访问运算符([ ])来访问该类的实例。语法一维索引器的语法如下:element-type this[int index] { /......
Perl 引用
引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方。创建引用定义变量的时候,在变量名前面加个,就得到了这个变量的一个引用,比如:$scalarref = $foo; # 标量变量引用$arrayref = @ARG......
Redis HGETALL key
Redis HGETALL 命令用于获取存储在键(key)处的所有字段和值。HGETALL - 返回值返回存储在哈希中的字段及其值的列表,或者当键不存在时为空列表。HGETALL - 语法以下是Redis HGETALL 命令的基本语法。redis 127.0.0.1:6379> HGETAL......
Redis SETRANGE key offset value
Redis SETRANGE 命令用于覆盖从指定偏移量开始的键处的字符串的一部分。SETRANGE - 返回值整数回复,由命令修改后的字符串长度。SETRANGE - 语法以下是Redis SETRANGE 命令的基本语法。redis 127.0.0.1:6379> SETRANGE KEY_......
Perl POD 文档
Perl 中可以在模块或脚本中嵌入 POD(Plain Old Documentation) 文档。POD 是一种简单而易用的标记型语言(置标语言)。POD 文档使用规则:POD 文档以 =head1 开始, =cut 结束, =head1 前与 =cut 后添加一空行。Perl 会忽略 POD 中......
Ruby 方法
Ruby 方法与其他编程语言中的函数类似。Ruby 方法用于捆绑一个或多个重复的语句到一个单元中。方法名应以小写字母开头。如果您以大写字母作为方法名的开头,Ruby 可能会把它当作常量,从而导致不正确地解析调用。方法应在调用之前定义,否则 Ruby 会产生未定义的方法调用异常。语法def metho......
Perl 面向对象
Perl 中有两种不同地面向对象编程的实现:一是基于匿名哈希表的方式,每个对象实例的实质就是一个指向匿名哈希表的引用。在这个匿名哈希表中,存储来所有的实例属性。二是基于数组的方式,在定义一个类的时候,我们将为每一个实例属性创建一个数组,而每一个对象实例的实质就是一个指向这些数组中某一行索引的引用。在......
Python3 字典popitem() 方法
Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。如果字典已经为空,却调用了此方法,就报出KeyError异常。语法popitem()方法语法:popitem()参数无返回值返回一个键值对(key,value)形式。实例以下实例展示了 popitem()......
Python3 运算符
本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子中, 4 和 5 被称为 操 作数,”+ “ 称为运算符。Python语言支持以下类型的运算符:算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级接下来让我们一个个来学习Python的......
Java rint() 方法
rint() 方法返回最接近参数的整数值。语法该方法有以下几种语法格式:double rint(double d)参数double 原始数据类型。返回值返回 double 类型数组,是最接近参数的整数值。实例实例public class Test{ public static void mai......
Redis RANDOM key
Redis RANDOMKEY 命令用于从Redis数据库获取随机键(key)。RANDOMKEY - 返回值字符串,一个随机键,如果数据库为空,则为nil。RANDOMKEY - 语法以下是Redis RANDOMKEY 命令的基本语法。redis 127.0.0.1:6379> RANDO......
MySQL PHP语法
MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP。 在这些语言中,Mysql在PHP的web开发中是应用最广泛。在本教程中我们大部分实例都采用了 PHP 语言。如果你想了解 Mysql 在 PHP 中的应用,可以访问我们的 PHP教程。PHP提供了多种方式来访问和......
Redis PERSIST Key
Redis PERSIST 命令用于从键(key)中删除到期时间。PERSIST - 返回值整数值1或01,如果从键(key)中删除了超时。0,如果键(key)不存在或没有关联的超时。PERSIST - 语法以下是Redis PERSIST 命令的基本语法。redis 127.0.0.1:6379&......
Ruby 变量
/ruby/ruby-variable.html变量是持有可被任何程序使用的任何数据的存储位置。Ruby 支持五种类型的变量。一般小写字母、下划线开头:变量(Variable)。$ 开头:全局变量(Global variable)。@ 开头:实例变量(Instance variable)。@@ 开头......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!