Python——字典dict()详解
一、字典
字典是Python提供的一种数据类型,用于存放有映射关系的数据,字典相当于两组数据,其中一组是key,是关键数据(程序对字典的操作都是基于key),另一组数据是value,可以通过key来进行访问。如图:
1、创建字典
通过Python内置函数help()查看帮助:
>>> help(dict)
Help on class dict in module builtins: class dict(object)
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
|
| Methods defined here:
|
| __contains__(self, key, /)
| True if the dictionary has the specified key, else False.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(...)
| x.__getitem__(y) <==> x[y]
|
| __gt__(self, value, /)
| Return self>value.
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(...)
| D.__sizeof__() -> size of D in memory, in bytes
|
| clear(...)
| D.clear() -> None. Remove all items from D.
|
| copy(...)
| D.copy() -> a shallow copy of D
|
| get(self, key, default=None, /)
| Return the value for key if key is in the dictionary, else default.
|
| items(...)
| D.items() -> a set-like object providing a view on D's items
|
| keys(...)
| D.keys() -> a set-like object providing a view on D's keys
|
| pop(...)
| D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
| If key is not found, d is returned if given, otherwise KeyError is raised
|
| popitem(...)
| D.popitem() -> (k, v), remove and return some (key, value) pair as a
| 2-tuple; but raise KeyError if D is empty.
|
| setdefault(self, key, default=None, /)
| Insert key with a value of default if key is not in the dictionary.
|
| Return the value for key if key is in the dictionary, else default.
|
| update(...)
| D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
| If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
| If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
| In either case, this is followed by: for k in F: D[k] = F[k]
|
| values(...)
| D.values() -> an object providing a view on D's values
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| fromkeys(iterable, value=None, /) from builtins.type
| Create a new dictionary with keys from iterable and values set to value.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
通过帮助文档,可以看到,程序可以使用花括号或者dict()函数创建字典,
花括号创建字典,例:
# 使用花括号创建字典
a = {'小红':'学霸','小黑':'学渣','老王':'班主任'}
print (a)
# 打印 {'小红': '学霸', '小黑': '学渣', '老王': '班主任'} # 使用花括号创建空字典
b = {}
print (b)
# 打印 {} # 字典嵌套
c = {'学生':{'小红':'学霸','小黑':'学渣'},'老师':{'老王':'班主任'}}
print (c)
# 打印 {'学生': {'小红': '学霸', '小黑': '学渣'}, '老师': {'老王': '班主任'}}
print (c['学生'])
# 打印 {'小红': '学霸', '小黑': '学渣'} # 元组作为字典的key
d = {('级长','班主任'):'老王',('学生','委员'):'小红'}
print (d)
# 打印 {('级长', '班主任'): '老王', ('学生', '委员'): '小红'}
print (d[('学生', '委员')])
# 打印 '小红'
使用dict函数创建字典,例:
# 创建空字典
e = dict()
print (e)
# 打印 {} # 使用dict指定关键字参数创建字典,key不允许使用表达式
f = dict(k1 = 1,k2 = 'v2')
print (f)
# 打印 {'k1': 1, 'k2': 'v2'} # 使用dict指定关键字参数创建字典,key使用表达式
y = dict(1=1,2=2)
# 报错:SyntaxError: keyword can't be an expression # 创建两个键值对字典
h1 = [('k1',1),('k2',2)]
h = dict(h1)
print (h1)
# 打印 {'k1': 1, 'k2': 2} # 创建三个键值对字典
i1 = [['j1',1],['j2',2],['j3',3]]
i = dict(i1)
print (i)
# 打印 {'j1': 1, 'j2': 2, 'j3': 3}
2、字典用法
- 通过key访问value
a = {'小红':'学霸','小黑':'学渣','老王':'班主任'}
# 通过key访问value
print (a['小红'])
# 打印 学霸
c = {'学生':{'小红':'学霸','小黑':'学渣'},'老师':{'老王':'班主任'}}
# 访问字典嵌套字典的value
c1 = c['学生']
print (c1)
# 打印 {'小红': '学霸', '小黑': '学渣'}
print (c1['小红'])
# 打印 学霸
- 通过key添加键值对
# 创建字典
n = dict(k1 = 1,k2 = 2,k3 = 3) # 通过key添加key-value对(需要为不存在的key赋值,如果已存在,会被覆盖)
n['k4'] = 4
print (n)
# 打印 {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4}
- 通过key修改键值对
m = {'k1': 1, 'k2': 2, 'k3': 3}
# 如果key已存在,则新的value会覆盖原来的value
m['k1'] = '覆盖'
print (m)
# 打印 {'k1': '覆盖', 'k2': 2, 'k3': 3}
- 通过in或not in运算符判断字典是否包含指定的key
p = {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4}
# 判断p是否包含名为'k1'的key
print ('k1' in p)
# 打印 True
print ('k1' not in p)
# 打印 False
#判断p是否包含名为'k5'的key
print ('k5' in p)
# 打印 False
print ('k5' not in p)
# 打印 True
3、字典的常用方法
我们可以在Python交互模式中,输入dir(dict)查看dict类包含哪些方法,
例:
>>> dir(dict)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
1)、clear()
用于清除一个字典的键值对,当一个字典执行clean()之后,这个字典将会变为空字典。
>>> help(dict.clear)
Help on method_descriptor: clear(...)
D.clear() -> None. Remove all items from D.
例:
c = dict(k1 = 1,k2 = 2)
c.clear()
print(c)
# 打印 {}
2)、copy()
可复制一个字典的键值对。
>>> help(dict.copy)
Help on method_descriptor: copy(...)
D.copy() -> a shallow copy of D
例:
c = dict(k1 = 1,k2 = 2)
d = c.copy()
print(d)
# 打印 {'k1': 1, 'k2': 2}
3)、fromkeys()
使用给定的多个key创建字典,这些key对应的value默认为None,该方法一般会使用dict类直接调用(字典对象调用没有什么意义)。
>>> help(dict.fromkeys)
Help on built-in function fromkeys: fromkeys(iterable, value=None, /) method of builtins.type instance
Create a new dictionary with keys from iterable and values set to value.
例:
a = (['k1','k2','k3'])
b = dict.fromkeys(a)
print(b)
# 打印 {'k1': None, 'k2': None, 'k3': None} # 传入'test'作为默认的value
d = (['k1','k2','k3'])
e = dict.fromkeys(d,'test')
print(e)
# 打印 {'k1': 'test', 'k2': 'test', 'k3': 'test'}
4)、get()
如果key在字典中,则返回key对应的value值,否则返回default默认参数None。
>>> help(dict.get)
Help on method_descriptor: get(self, key, default=None, /)
Return the value for key if key is in the dictionary, else default.
例:
a = dict(k1 = 1, k2 =2)
print(a.get('k1'))
# 打印 1 print(a.get('k10'))
# 打印 None # 传入“Not_found”作为默认的default
print(a.get('k10','Not_found'))
# 打印 Not_found
5)、items()
用于获取字典中的所有键值对,返回dict_items对象。
>>> help(dict.items)
Help on method_descriptor: items(...)
D.items() -> a set-like object providing a view on D's items
例:
a = dict(k1 =1,k2 = 2)
print(a.items())
# 打印 dict_items([('k1', 1), ('k2', 2)]) # 将dict_items转换成list
print(list(a.items()))
# 打印 [('k1', 1), ('k2', 2)]
6)、keys()
用于返回字典中的所有key,返回dict_keys对象。
>>> help(dict.keys)
Help on method_descriptor: keys(...)
D.keys() -> a set-like object providing a view on D's keys
例:
a = dict(k1 =1,k2 = 2)
print(a.keys())
# 打印 dict_keys(['k1', 'k2']) # 将dict_keys转换成list
print(list(a.keys()))
# 打印 ['k1', 'k2']
7)、values()
用于返回字典中的所有value,返回dict_values对象。
>>> help(dict.values)
Help on method_descriptor: values(...)
D.values() -> an object providing a view on D's values
例:
a = dict(k1 =1,k2 = 2)
print(a.values())
# 打印 dict_values([1, 2]) # 将dict_values转换为list
print(list(a.values()))
# 打印 [1, 2]
8)、popitem()
用于随机删除字典中的一个键值对,实际上字典的popitem()方法总是弹出底层存储的最后一个键值对。
>>> help(dict.popitem)
Help on method_descriptor: popitem(...)
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
例:
a = dict(k1 =1,k2 = 2,k3 = 3,k4 = 4,k5 = 5)
print(a.popitem())
# 打印 ('k5', 5)
print(a)
# 打印 {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4}
9)、setdefault()
用于根据key获取对应的value,如果key在字典中不存在时,会先给这个key设置一个默认的value,再返回这个key对应的value。
>>> help(dict.setdefault)
Help on method_descriptor: setdefault(self, key, default=None, /)
Insert key with a value of default if key is not in the dictionary. Return the value for key if key is in the dictionary, else default.
例:
a = dict(k1 =1,k2 = 2)
print(a.setdefault('k1'))
# 打印 1 print(a.setdefault('k10'))
# 打印 None # 传入‘test’作为默认的default
print(a.setdefault('k11','test'))
#打印 test
print(a)
# 打印 {'k1': 1, 'k2': 2, 'k10': None, 'k11': 'test'}
10)、update()
在一个字典中,可根据key对已存在的键值对进行覆盖,如果key不存在,则该键值对会被添加进字典。
>>> help(dict.update)
Help on method_descriptor: update(...)
D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
例:
a = dict(k1 =1,k2 = 2)
# 根据key对已存在的key-value,覆盖value
a.update(k1 = 3)
print(a)
# 打印 {'k1': 3, 'k2': 2} # key不存在,该键值对会被添加进字典
a.update(k3 = 10)
print(a)
# 打印 {'k1': 3, 'k2': 2, 'k3': 10}
11)、pop()
用于根据key获取对应的value,并且删除该键值对。
>>> help(dict.pop)
Help on method_descriptor: pop(...)
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
例:
a = dict(k1 =1,k2 = 2,k3 = 3,k4 = 4,k5 = 5)
print(a.pop('k1'))
# 打印 1
print(a)
# 打印 {'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5}
4、注意事项
列表不允许对不存在的索引赋值,但字典允许对不存在的键赋值。
例:
p = [1,2,3,4,5]
# 对不存在的索引赋值
p[5] = 666
# 报错 IndexError: list assignment index out of range q = dict(a=1,b=2)
# 对不存在的key赋值
q['c'] = 3
print (q)
# 打印 {'a': 1, 'b': 2, 'c': 3}
Python——字典dict()详解的更多相关文章
- Python - 字典(dict) 详解 及 代码
字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
- python 字典操作方法详解
字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 注意,浮点数比较很不精确, ...
- python字典操作方法详解
前言 字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 注意,浮点数比较很不 ...
- python——Container之字典(dict)详解
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. ...
- 字典dict详解
字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据. 比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关 ...
- python 列表操作方法详解
列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表是一个数据的集合,集合内可以放任何数据类型,可对集合方便的增删改查操作.Python已经内置确定序列的长度以及确定最大和最 ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- python之数据类型详解
python之数据类型详解 二.列表list (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...
随机推荐
- [51nod] 1007 正整数分组 dp
将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的. Input 第1行:一个数N,N为正整数的数量 ...
- 了解HTTP协议和TCP协议
HTTP(超文本传输协议),互联网上应用最为广泛的一种网络协议.所有的www文件都必须遵守这个标准.HTTP是一个客户端和服务端请求和应答的标准(TCP):客户通过浏览器发起一个到服务器上指定端口的H ...
- 一、接口测试——HTTPRunner二次开发之参数化一
目前项目中在使用开源框架HTTPRunner,时间使用过程中会用到生成随机信息的方法,如生成随机姓名.随机手机号.身份证号.姓名.地址等.以下对二次开发的过程进行简要描述. 一.需求 1.需要测试的接 ...
- Jmeter集成Jira提交缺陷
笔者曾在文章<Jmeter排忧解难—生成excel结果文件>聊到了一种提高接口测试效率的方法.今天,咱们接着对“提高接口测试效率”这个话题做更深入的探讨.作为一名接口测试人员,我们是否一直 ...
- [Java]ArrayList、LinkedList、Vector、Stack的比较
一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...
- spring的2种类型转换器
spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...
- 低版本Firefox支持innerText属性兼容方法
FireFox支持innerText属性了,很遗憾是44.0.2版本以下还需要兼容处理. 方法一: innerHTML是符合W3C标准的属性,而innerText只适用于IE浏览器,因此,尽可能地去使 ...
- C#oracle还原imp实例
C#来做oracle还原,调用oracle自带函数imp.exe时,需要注意的是:1.imp.exe 中fromuser 和touser两个关键字: fromuser与exp.exe中的owner对应 ...
- 【Design Patterns】监听器模式
监听器模式 监听器模式其实是观察者模式中的一种,两者都有关于回调的设计. 与观察者模式不同的是,观察者模式中存在的角色为观察者(Observer)和被观察者(Observable) 而监听器模式中存在 ...
- css3的transform ,2D变换
transformtransform的中文翻译就是变换,改变,改观,转换的意思 在css中的主要作用就是对一个div或元素进行样式的改变. 他的属性(变换方式)有:平移,旋转,缩放,扭曲transla ...