当前位置:首页>基础编程学习>Python>Python字典
Python字典
阅读 1
2024-09-23

字典介绍

字典是 Python 中内建的一种具有弹性储存能力的数据结构,可存储任意类型对象,与序列使用整数索引不同,它使用键(key)进行索引。

通常任何不变类型的对象均可作为索引,比如数字,字符串和元组,列表可以被修改,不可作为键。由于键作为索引使用,所以它必须是唯一的。

字典的每个键都有对应的值 (value),键值对用冒号 “:” 分割,每个键值对之间用逗号 “,” 分割,整个字典包括在花括号 {} 中。
dict0 = {"python" : "Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。", "java" : "Java是一门面向对象的编程语言,不仅吸收了C  语言的各种优点,还摒弃了C  里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进"};

  info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
字典和列表一样,也能够存储多个数据
列表中找某个元素时,是根据下标进行的
字典中找某个元素时,是根据'名字'(就是冒号:前面的那个值,例如上面代码的'name'、'id'、'sex')

根据键访问值

info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
print(info['name'])
print(info['address'])
若访问不存在的键,则会报错:
>>> info['sex']
Traceback (most recent call last):
File "<stdin>", line 1, in <module> KeyError: 'sex'

在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
print(info.get("sex"))
print(info.get("sex",2))
结果:
None
2

字典的常见操作

len()

测量字典中,键值对的个数
info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
print(len(info))

结果:
4

keys()

返回一个包含字典所有KEY的列表
info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
print(info.keys())
结果:
dict_keys(['name', 'id', 'age', 'address'])

values()

返回一个包含字典所有value的列表
info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
print(info.values())
结果:
dict_values(['python', 1, 34, '荷兰国家数学与计算机科学研究中心'])

items

返回一个包含所有(键,值)元祖的列表
info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
print(info.items())
结果:
dict_items([('name', 'python'), ('id', 1), ('age', 34), ('address', '荷兰国家数学与计算机科学研究中心')])

字典遍列

通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。
字符串遍历
mystr="Python才是世界上最好的语言,世界最好的语言python"
for char in mystr:
    print(char,end=" ")
结果:
P y t h o n 才 是 世 界 上 最 好 的 语 言 , 世 界 最 好 的 语 言 p y t h o n

列表遍历

myList=["Python","C","Java","C  ","C#"]
for item in myList:
    print(item,end=" ")
结果:
Python C Java C   C#

元组遍历

myTurple = ("Python", "C", "Java", "C  ", "C#") 
for t in myTurple:
    print(t,end=" ")

结果:
Python C Java C   C#

字典遍历

遍历字典的key(键)

info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
for key in info.keys():
    print(key,end=",")
结果:
name,id,age,address,

遍历字典的value(值)

info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
for key in info.values():
    print(key,end=",")
结果:
python,1,34,荷兰国家数学与计算机科学研究中心,

遍历字典的项(元素)

info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
for item in info.items():
    print(item,end=",")

结果:
('name', 'python'),('id', 1),('age', 34),('address', '荷兰国家数学与计算机科学研究中心'),

遍历字典的key-value(键值对)

info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
for key,value in info.items():
    print("key=%s value=%s"%(key,value))

结果:
key=name value=python
key=id value=1
key=age value=34
key=address value=荷兰国家数学与计算机科学研究中心

公共方法

运算符


运算符 

Python 表达式 

结果 

描述 

支持的数据类型

 

[1, 2] [3, 4] 

[1, 2, 3, 4] 

合并 

字符串、列表、元组
*'Hi!' * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']复制字符串、列表、元组
in

3 in (1, 2, 3) 

True 

元素是否存在 

字符串、列表、元组、字典 

not in4 not in (1, 2, 3)True 元素是否不存在字符串、列表、元组、字典


a=[1,2,3]
b=[4,5,6]
print(a b)

str1="Best"
str2="Python"
print(str1 str2)

结果:
[1, 2, 3, 4, 5, 6]
BestPython

*

str2="Python "
print(str2 * 4)
结果:
Python Python Python Python 

in

a=[1,2,3]
b=[4,5,6]
print( 3 in a)
print(7 in b)
结果:
True
False
注意,in在对字典操作时,判断的是字典的键

python内置函数

Python包含了以下内置函数


序号 方法描述
1

len(item) 

计算容器中元素个数
2

max(item) 

返回容器中元素最大值
3min(item)返回容器中元素最小值
4del(item)删除变量


len

>>> len("python java")
11
>>> len([1,2,3,4])
4
>>> len({"python":"langeu","java":""})
2
>>> 
注意:len在操作字典数据时,返回的是键值对个数。

max

>>> max([1,2,3,4])
4
>>> max("python java")
'y'
>>> max({"a":1,"b":2})
'b'
>>> 

del

del有两种用法,一种是del加空格,另一种是del()
>>> a=1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> a=['python','java','c','c  ']
>>> a
['python', 'java', 'c', 'c  ']
>>> del a[0]
>>> a
['java', 'c', 'c  ']
>>> del(a)
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

多维列表/元祖访问的示例

>> tuple1=[(2,3),(4,5)]
>>> tuple1[0]
(2, 3)
>>> tuple1[0][0]
2
>>> tuple1[0][2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> tuple1[2][2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> tuple2=tuple1 [3]
>>> tuple2
[(2, 3), (4, 5), 3]
>>> tupl2[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tupl2' is not defined
>>> tuple2[2]
3
>>> tuple2[2][0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable

字典的常见操作

修改元素

字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
newId=input("请输入编号:")
info['id']=int(newId)
print("修改后的id为%d"%info['id'])
结果:
2

添加元素

如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
info['author']="吉多·范罗苏姆"
print(info)
结果:
{'name': 'python', 'id': 1, 'age': 34, 'address': '荷兰国家数学与计算机科学研究中心', 'author': '吉多·范罗苏姆'}

删除元素

对字典进行删除操作,有一下几种:
del
clear()
del删除指定的元素
info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
info['author']="吉多·范罗苏姆"
del info['author']
print(info)
结果:
{'name': 'python', 'id': 1, 'age': 34, 'address': '荷兰国家数学与计算机科学研究中心'}

del删除整个字典

info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
info['author']="吉多·范罗苏姆"
 #删除前
print(info)

del info
#删除后
print(info)
结果:
    print(info)
NameError: name 'info' is not defined

clear清空整个字典

info = {'name':'python', 'id':1, 'age':34, 'address':'荷兰国家数学与计算机科学研究中心'}
info['author']="吉多·范罗苏姆"
 #清空前
print(info)

info.clear()
#清空后
print(info)

结果:
{}
上一篇: Python 列表 (List)
下一篇:Python的元组
评论 (0)