python3字典

Python3 字典

字典是一种可变容器模型,可存储任意类型对象,是python的一种內置数据类型。字典在其他语言里可能会被叫做 联合内存 或 联合数组,字典的数据元素由键和键值组成的键值对构成。

字典的每个键都通过冒号(:)与其值分隔,每个键值对用逗号分隔,整个字典包括在花括号({})中。基本格式如下所示:

dict = {key1 : value1, key2 : value2 }

与以连续整数为索引的序列不同,字典是以键为索引的,因此键必须是唯一的。键可以是任意不可变类型,但键值则不必,键值可以取任何数据类型。一个简单的字典实例:

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

字典初始化

创建一个空字典:

dict={};

可以直接在花括号中放置一些以逗号分隔的键值对来创建字典,如:

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

可以直接用dict() 构造函数从键值对序列里创建字典,如:

 

print(dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]))

输出结果如下:

{'sape': 4139, 'guido': 4127, 'jack': 4098}

当键是简单字符串时,可以直接通过键参数来指定键值,如:

print(dict(sape=4139, guido=4127, jack=4098))

输出结果如下:

{'sape': 4139, 'guido': 4127, 'jack': 4098}

此外,字典推导式可以从任意的键值表达式中来创建字典,如一下用例:

print({x: x**2 for x in (2, 4, 6)})

输出结果如下:

{2: 4, 4: 16, 6: 36}

访问字典

对一个字典执行 list(dict) 将返回包含该字典中所有键按插入次序排列的列表。(如需其他排序,则要使用 sorted(dict))

如下示例:

dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'};
print(list(dict));

输出结果如下:

['Age', 'Name', 'Class']

通常通过键来访问字典中对应的键值,把相应的键放入中括号([])中,如下实例:

dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])

以上实例输出结果:

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

如果访问字典中不存在的键,会输出错误,如下实例:

dict = {'Name': 'W3CSchool', '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'

可以通过字典内置方法in来判断键是否在字典中,示例如下:

tel = {'jack': 4098, 'sape': 4139};
print('jack' in tel);
print('sape' not in tel);

输出结果如下:

True
False

更新字典

更新字典元素的方法是增加新的键/值对,修改已有键/值对,如下实例:

dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8;               # 更新 Age
dict['School'] = "W3Cschool教程"  # 添加一个键值对
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

以上实例输出结果:

dict['Age']:  8
dict['School']:  W3Cschool教程

删除字典元素

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

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

dict = {'Name': 'W3CSchool', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键 'Name'
dict.clear()     # 删除字典中元素
del dict         # 删除字典
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

但这会引发一个异常,因为执行del dict 操作后字典不再存在,程序出现如下错误:

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

字典键的特性

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

两个重要的点需要记住:

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

dict = {'Name': 'W3CSchool', 'Age': 7, 'Name': '小菜鸟'}
print ("dict['Name']: ", dict['Name'])

以上实例输出结果:

dict['Name']:  小菜鸟

2)键可以是任意不可变类型,通常是字符串或数字。如果一个元组只包含字符串、数字或元组,那么这个元组也可以用作关键字。但如果元组直接或间接地包含了可变对象,那么它就不能用作关键字。列表不能用作关键字,因为列表可以通过索引、切片或 append() 和 extend() 之类的方法来改变。,如下实例:

dict = {['Name']: 'W3CSchool', 'Age': 7}
print ("dict['Name']: ", dict['Name'])

以上实例输出结果:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    dict = {['Name']: 'W3CSchool', 'Age': 7}
TypeError: unhashable type: 'list'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_42194332

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值