搜索内容

有一个问题?

如果您有任何疑问,可以在下面询问或输入您要寻找的!

Python基础与拾遗4:Python中的字典

生成海报
jiongnima
jiongnima 2021-02-05 22:05
阅读需:0

Python基本与拾遗4:Python中的词典

  • 词典有关界定
  • 词典有关实际操作
    • 怎样防止missing-key不正确
    • 建立词典的方式
    • Python 3.0及以后的版本号中的词典转变

这篇博闻,关键小结Python中的词典及有关实际操作,下边逐渐干货知识。

词典有关界定

  1. 词典是随意目标的混乱结合
a = {"a": 1, "b": [1, 2, 3], 3: 2} # {'a': 1, 'b': [1, 2, 3], 3: 2}
  1. 词典根据而不是根据数据库索引开展载入。词典又叫关系二维数组或是散列表,数据库索引采用键的方式。假如要选用相近常用的方法,请将实数做为键,以下例所显示。
a = {"a": 1, "b": [1, 2, 3], 3: 2}
a["a"] # 1
a[0] # KeyError: 0
a[3] # 2
  1. 词典可在原来地方提高或减少,对映异构,随意深层嵌入
a = {"a": 1, "b": [1, 2, 3], 3: 2}
a["c"] = (4, 5, 6) # {'a': 1, 'b': [1, 2, 3], 3: 2, 'c': (4, 5, 6)}
del a["a"] # {'b': [1, 2, 3], 3: 2, 'c': (4, 5, 6)}
b = {"dic": a, "list": [1, 2, 3], "str": "hello"} # {'dic': {'b': [1, 2, 3], 3: 2, 'c': (4, 5, 6)}, 'list': [1, 2, 3], 'str': 'hello'}
  1. 词典归属于可变性投射种类。词典能够在原来地方改动,可是不可以开展合拼与分块实际操作,是唯一的投射种类。
a = {"a": 1, "b": [1, 2, 3], 3: 2}
a["a"] += 10 # {'a': 11, 'b': [1, 2, 3], 3: 2}
  1. 词典是目标引入表,储存的是目标的引入,Python会用最优控制的散列优化算法找寻键。

词典有关实际操作

实际操作表述
D={}空词典
D={‘spam’:2, ‘eggs’:3}两新项目词典
D={‘food’: {‘ham’:1, ‘eggs’:2}}词典嵌入
D=dict.fromkeys([‘a’,‘b’])fromkeys方式 结构词典
D=dict(zip(keylist, vallist))投射结构词典
D=dict(name=‘Bob’, ‘age’=42)键值对结构词典
D[‘eggs’]以键为数据库索引开展搜索
D[‘food’][‘ham’]功能键数据库索引中功能键数据库索引
‘eggs’ in D键是不是存有
D.keys()返回键目录
D.values()传参目录
D.items()回到键值对目录
D.copy()拷贝词典
D.get(key, default)回到特定键的值,假如不会有就回到default
D.update(D2)词典合拼
D.pop(key)功能键删掉
len(D)回到长短
D[key]=42增加键值对
del D[key]依据键删掉内容
list(D.keys())返回键目录Python 3.0及以后的版本号中
D1.keys() & D2.keys()2个词典的键求相交
D = {x: x*2 for x in range(10)}词典分析
  1. keys,values和items回到键,值和键值对,在Python 3.0及以后的版本号中,可应用list()将其变换为目录。
a = {'a': 11, 'b': [1, 2, 3], 3: 2}
list(a.keys()) # ['a', 'b', 3]
list(a.values()) # [11, [1, 2, 3], 2]
list(a.items()) # [('a', 11), ('b', [1, 2, 3]), (3, 2)]
  1. update合拼词典,将一个词典的值遮盖到另一个词典中,并遮盖反复的值
a = {'a': 11, 'b': [1, 2, 3], 3: 2}
b = {'a': 22, 'c': ['a', 'b', 'c']}
a.update(b) # {'a': 22, 'b': [1, 2, 3], 3: 2, 'c': ['a', 'b', 'c']}
  1. pop会删掉一个键并返回键的值
a = {'a': 11, 'b': [1, 2, 3], 3: 2}
a.pop('a') # 回到11,如今a为{'b': [1, 2, 3], 3: 2}
  1. 分块与合拼在词典中失效
a = {'a': 11, 'b': [1, 2, 3], 3: 2}
b = {'a': 22, 'c': ['a', 'b', 'c']}
a + b # TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
a[0] # KeyError: 0

怎样防止missing-key不正确

  1. 应用if语句开展分辨。
a = {'a': 11, 'b': [1, 2, 3], 3: 2}
if 'b' in a:
	print(a['b']) # [1, 2, 3]
if 'c' in a:
	print(a['c']) # 无輸出
  1. 应用try/except句子
a = {'a': 11, 'b': [1, 2, 3], 3: 2}
try:
	print(a['c'])
except KeyError:
	pass
  1. 应用get方式 ,回到初始值
a.get('c', 0) # 回到0

建立词典的方式

  1. 立即建立。
a={'a': 1, 'b': 2}
  1. 给空词典取值。
a={}
a['a']=1
a['b']=2
  1. dict涵数。
a=dict([('a', 'b'),(1,2)])
  1. 假如全部的键的值同样,可以用fromkeys方式 。
a=dict.fromkeys(['a', 'b'], 0) # {'a': 0, 'b': 0}
  1. 在Python 3.0及以后的版本号中,能够应用词典分析
a={k:v for (k,v) in zip(['a', 'b'],[1,2])} # {'a': 1, 'b': 2}

Python 3.0及以后的版本号中的词典转变

  1. 增加词典分析作用,可用以建立词典,见上边的事例。
  2. 对D.key(),D.values(),D.items()方式 回到可迭代更新的主视图,而不是目录,根据list()转化成目录,见上边的事例。
  3. 必须排列词典键得话,根据排列转化成的目录,而不可以排列主视图。
a = {'a': 11, 'b': [1, 2, 3], 'c': 2}
key_list = list(a.keys())
sorted(key_list) # ['a', 'b', 'c']
  1. 不兼容立即用<或是>较为词典,能够较为排列后的D.items()目录,可是能够应用==标记。
a = {'a': 11, 'b': [1, 2, 3], 'c': 2}
b = {'d': 11, 'c': [1, 2, 3], 'a': 2}
sorted(a.items()) < sorted(b.items()) # False
a < b # TypeError: '<' not supported between instances of 'dict' and 'dict'
a == b # False
  1. has_key方式 被撤消,取代它的的是in
a = {'a': 11, 'b': [1, 2, 3], 'c': 2}
a.has_key('a') # AttributeError: 'dict' object has no attribute 'has_key'
'a' in a # True

之上,热烈欢迎诸位阅读者盆友明确提出建议或提议。

热烈欢迎阅读文章小编事后blog,诸位阅读者盆友的适用与激励就是我较大 的驱动力!

written by jiong
放弃幻想,
提前准备抗争!

相关标签:
评论
  • 消灭零回复