赞
踩
语法格式如下:
{}
)内,每个项之间以逗号(,
)分隔,键值对用冒号(:)分隔。- >>>
- >>> dic = {} # 空字典
- >>> dic
- {}
- >>>
- >>> dic = {1:'Python', 2:'C++'} # key 是整形
- >>>
- >>>
- >>> dic = {'name':'python', 2:[1, 2, 3]} # key 是混合类型
- >>>
- >>> dic = dict([(1,'Python'), (2,'C++')]) # 使用 dict() 函数
- >>> dic
- {1: 'Python', 2: 'C++'}
- >>>
- >>> dic = {'name':'python', (1, 2):'C++'} # 具有不可变元素的元组
- >>>
- >>> {'name':'python', [1, 2]:'C++'} # 列表
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- TypeError: unhashable type: 'list'
- >>>
- >>> {'name':'Python', 'name':'C++'} # key 重复
- {'name': 'C++'}
- >>> #虽然没有报错,但前面的值被后面的覆盖了
- ...
- >>>
字典通过 key 来检索 value,有两种方式:
[]
)内使用 key区别在于:使用 get(),如果没有找到 key,则返回 None,而不是 KeyError。
- >>> dict0 = {'name':'zth','age':20}
- >>>
- >>>
- >>> dict0['name']
- 'zth'
- >>>
- >>> dict0.get('age')
- 20
- >>>
- >>> dict0['zth'] # 没有找到 key,引发 KeyError
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- KeyError: 'zth'
- >>>
- >>> print(dict0.get(20)) # 没有找到 key,返回默认值
- None
dict() 函数用于创建一个字典。
- class dict(**kwarg)
- class dict(mapping, **kwarg)
- class dict(iterable, **kwarg)
参数说明:
返回一个字典。
- >>>dict() # 创建空字典
- {}
- >>> dict(a='a', b='b', t='t') # 传入关键字
- {'a': 'a', 'b': 'b', 't': 't'}
- >>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
- {'three': 3, 'two': 2, 'one': 1}
- >>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典
- {'three': 3, 'two': 2, 'one': 1}
字典是可变的,可以添加新元素,也可以使用赋值运算符(=
)更改现有元素的值。
如果 key 存在,value 将被更新;否则,新的 key:value 对会被添加到字典中。
- >>> dict0 = {}
- >>>
- >>>
- >>> dict0['name'] = 'zth' # 添加项
- >>> dict0
- {'name': 'zth'}
- >>>
- >>> dict0['aeg'] = 21 # 添加项
- >>> dict0
- {'name': 'zth', 'aeg': 21}
- >>>
- >>> dict0['aeg'] = 20 # 更新
- >>> dict0
- {'name': 'zth', 'aeg': 20}
通过使用 pop() 方法,可以删除指定 key 对应的元素,并返回其 value。
popitem() 方法可以用来删除并返回一个任意元素 (key, value)。
使用 del 关键字来删除单个元素或整个字典本身。
clear() 方法则会一次性删除所有元素。
- >>> dict0 = {'name': 'zth', 'age': 20, 'sex':'M', 'grade':None}
- >>>
- >>>
- >>> dict0.pop('grade') # 删除某一项
- >>> dict0
- {'name': 'zth', 'age': 20, 'sex': 'M'}
- >>>
- >>> dict0.popitem() # 删除任意一项
- ('sex', 'M')
- >>> dict0
- {'name': 'zth', 'age': 20}
- >>>
- >>>
- >>> del dict0['age'] # 删除某一项
- >>> dict0
- {'name': 'zth'}
- >>>
- >>> dict0.clear() # 清空 - 删除所有项
- >>> dict0
- {}
- >>>
- >>>
- >>> del dict0 # 删除字典
- >>> dict0
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'dict0' is not defined
可以测试一个 key 是否存在于字典中,使用关键字 in。
注意: 成员测试仅适用于 key,不适用于 value。
- >>> dict0 = {'name': 'zth', 'aeg': 20, 'sex':'M'}
- >>>
- >>> 'name' in dict0
- True
- >>>
- >>> 'grade' in dict0
- False
- >>>
- >>> 'zth' in dict0 # 不能检测 value
- False
- >>>
使用 for 循环,可以遍历字典中的每个 key。
- >>> dict0 = {'name': 'zth', 'aeg': 20, 'sex':'M'}
- >>>
- >>>
- >>> for key in dict0:
- ... print(key)
- ...
- name
- aeg
- sex
函数 | 描述 |
all() | 如果字典的所有 key 都是 True(或者字典为空),返回 True。 |
any() | 用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。 |
len() | 返回字典的长度(元素个数) |
sorted() | 返回一个新的排序字典(不排序字典本身) |
str(dict) | 输出字典,以可打印的字符串表示。 |
type() | 返回输入的变量类型,如果变量是字典就返回字典类型。 |
- >>> dict0 = {'name': 'zth', 'aeg': 20, 'sex':'M'}
- >>>
- >>> all(dict0)
- True
- >>>
- >>> all({'name': 'zth', 0:20})
- False
- >>>
- >>>
- >>> any({'name': 'zth', 0:20})
- True
- >>>
- >>> any({():23, 0:20})
- False
- >>>
- >>>
- >>> len(dict0)
- 3
- >>> sorted(dict0)
- ['aeg', 'name', 'sex']
- >>>
- >>> str(dict0)
- "{'name': 'zth', 'aeg': 20, 'sex': 'M'}"
- >>>
- >>>
- >>> type(dict0)
- <class 'dict'>
字典的格式化方式是在每个转化说明符中的 % 字符后加上用圆括号括起来的键,再跟上其他说明元素。
- >>> dict0 = {'name': 'zth', 'aeg': 20, 'sex':'M'}
- >>>
- >>> print('姓名: %(name)s'%dict0)
- 姓名: zth
clear() 函数用于删除字典内所有元素。
clear()方法语法:
dict.clear()
Python 字典 copy() 函数返回一个字典的浅复制。
copy()方法语法:
参数: 无。
返回值: 返回一个字典的浅复制。
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
-
- dict1 = {'user':'zth','num':[1,2,3]}
-
- dict2 = dict1 # 浅拷贝: 引用对象
- dict3 = dict1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
-
- # 修改 data 数据
- dict1['user']='root'
- dict1['num'].remove(1)
-
- # 输出结果
- print(dict1)
- print(dict2)
- print(dict3)
- print('\n\n')
-
- dict3['user'] = 'fbb'
-
- print('dict1: ',dict1)
- print('dict3: ',dict3)
- print('\n\n')
-
- dict3['num'].remove(2)
-
- print('dict1: ',dict1)
- print('dict3: ',dict3)
- print('\n\n')
-
- print('dict2: ',dict2)
-
执行结果:
- pydev debugger: starting (pid: 1432)
- {'user': 'root', 'num': [2, 3]}
- {'user': 'root', 'num': [2, 3]}
- {'user': 'zth', 'num': [2, 3]}
-
-
-
- dict1: {'user': 'root', 'num': [2, 3]}
- dict3: {'user': 'fbb', 'num': [2, 3]}
-
-
-
- dict1: {'user': 'root', 'num': [3]}
- dict3: {'user': 'fbb', 'num': [3]}
-
-
-
- dict2: {'user': 'root', 'num': [3]}
fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
fromkeys()方法语法:
该方法返回列表。
- >>> seq = ( 'name','age','sex')
- >>>
- >>> dict1 = dict.fromkeys(seq)
- >>> dict1
- {'name': None, 'age': None, 'sex': None}
- >>>
- >>>
- >>> dict1 = dict.fromkeys(seq,10)
- >>>
- >>> dict1
- {'name': 10, 'age': 10, 'sex': 10}
get() 函数返回指定键的值,如果值不在字典中返回默认值。
get()方法语法:
返回指定键的值,如果值不在字典中返回默认值 None。
- >>> dict1 = {'Name': 'zth', 'Age': 20}
- >>>
- >>> print(dict1.get('Name'))
- zth
- >>>
- >>> print(dict1.get('sex'))
- None
- >>>
- >>> print(dict1.get('sex','未指定'))
- 未指定
in 操作符用于判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。
in 操作符语法:
key in dict
如果键在字典里返回true,否则返回false。
- >>> student={'小萌': '1001', '小智': '1002'}
- >>> print('小萌在student字典中:%s'%('小萌' in student))
- 小萌在student字典中:True
- >>> print('小强在student字典中:%s'%('小强' in student))
- 小强在student字典中:False
items() 方法以列表返回可遍历的(键, 值) 元组数组。
items()方法语法:
- >>> dict0 = {'name': 'zth', 'aeg': 20}
- >>>
- >>> dict0.items()
- dict_items([('name', 'zth'), ('aeg', 20)])
Python3 字典 keys() 方法返回一个迭代器,可以使用 list() 来转换为列表。
注意:Python2.x 是直接返回列表
keys()方法语法:
- >>> dict0 = {'name': 'zth', 'aeg': 20}
- >>>
- >>> dict0.keys()
- dict_keys(['name', 'aeg'])
- >>>
- >>>
- >>> list(dict0.keys())
- ['name', 'aeg']
setdefault() 方法和get()方法类似,用于获得与给定键相关联的值。 如果键不存在于字典中,将会添加键并将值设为默认值。
setdefault()方法语法:
如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。
- >>> dict0 = {'name': 'zth', 'aeg': 20}
- >>>
- >>> dict0.setdefault('name')
- 'zth'
- >>>
- >>> dict0.setdefault('sex')
- >>> print( dict0.setdefault('sex'))
- None
- >>>
- >>> print( dict0.setdefault('sex','M'))
- None
- >>>
- >>> print( dict0.setdefault('grade','86'))
- 86
- >>> dict0
- {'name': 'zth', 'aeg': 20, 'sex': None, 'grade': '86'}
update() 函数把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里。
update() 方法语法:
dict.update(dict2)
values() 方法返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值。
values()方法语法:
- >>> dict0 = {'name': 'zth', 'aeg': 20}
- >>>
- >>> dict0.values()
- dict_values(['zth', 20])
- >>>
- >>>
- >>> list(dict0.values())
- ['zth', 20]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。