dicts = {1:'a', 'b': [2,3,4], ("$","@"):(1,2,3)}

创建字典¶

In [2]:
test = dict(a=1,你好=2)
test
Out[2]:
{'a': 1, '你好': 2}
In [1]:
#方式1
demo = [('two',2), ('one',1), ('three',3)]
#方式2
demo = [['two',2], ['one',1], ['three',3]]
#方式3
demo = (('two',2), ('one',1), ('three',3))
#方式4
demo = (['two',2], ['one',1], ['three',3])
a = dict(demo)
In [5]:
keys = ['one', 'two', 'three'] #还可以是字符串或元组
values = [1, 2, 3] #还可以是字符串或元组
a = dict( zip(keys, values) )
In [4]:
knowledge = ['语文', '数学', '英语']
scores = dict.fromkeys(knowledge, 60)
print(scores)
{'语文': 60, '数学': 60, '英语': 60}

访问字典¶

In [3]:
#使用字符串作为key
scores = {'数学': 95, '英语': 92, '语文': 84}
print(scores)

#使用元组和数字作为key
dict1 = {(20, 30): 'great', 30: [1,2,3]}
print(dict1)

#创建空元组
dict2 = {}
print(dict2)
{'数学': 95, '英语': 92, '语文': 84}
{(20, 30): 'great', 30: [1, 2, 3]}
{}
In [6]:
tup = (['two',26], ['one',88], ['three',100], ['four',-59])
dic = dict(tup)
print(dic['one'])  #键存在
print(dic['five'])  #键不存在会抛出异常
88
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[6], line 4
      2 dic = dict(tup)
      3 print(dic['one'])  #键存在
----> 4 print(dic['five'])  #键不存在

KeyError: 'five'
In [11]:
a = dict(two=0.65, one=88, three=100, four=-59)
print( a.get('one') )
88
In [15]:
print( a.get('notexit') )
print( a.get('five', '该键不存在') )
None
该键不存在
In [13]:
del a['two'] ## 删除键值
print(a)
{'one': 88, 'three': 100, 'four': -59}
In [14]:
a['two'] = 888 #插入或赋值
a
Out[14]:
{'one': 88, 'three': 100, 'four': -59, 'two': 888}
In [17]:
print("one" in a)
print("notExist" in a)
True
False

keys、values、items¶

In [18]:
scores = {'数学': 95, '语文': 89, '英语': 90}
print(scores.keys())
print(scores.values())
print(scores.items())
dict_keys(['数学', '语文', '英语'])
dict_values([95, 89, 90])
dict_items([('数学', 95), ('语文', 89), ('英语', 90)])
In [21]:
a = {'数学': 95, '语文': 89, '英语': 90}
for k in a.keys():
    print(k,end=' ')
print("\n---------------")
for v in a.values():
    print(v,end=' ')
print("\n---------------")
for k,v in a.items():
    print("key:",k," value:",v)
print("---------------")
print(list(a.keys()))
数学 语文 英语 
---------------
95 89 90 
---------------
key: 数学  value: 95
key: 语文  value: 89
key: 英语  value: 90
---------------
['数学', '语文', '英语']

copy¶

最表层的键值对进行深拷贝,复合结构浅拷贝

In [22]:
a = {'one': 1, 'two': 2, 'three': [1,2,3]}
b = a.copy()
#向 a 中添加新键值对,由于b已经提前将 a 所有键值对都深拷贝过来,因此 a 添加新键值对,不会影响 b。
a['four']=100
print(a)
print(b)
#由于 b 和 a 共享[1,2,3](浅拷贝),因此移除 a 中列表中的元素,也会影响 b。
a['three'].remove(1)
print(a)
print(b)
{'one': 1, 'two': 2, 'three': [1, 2, 3], 'four': 100}
{'one': 1, 'two': 2, 'three': [1, 2, 3]}
{'one': 1, 'two': 2, 'three': [2, 3], 'four': 100}
{'one': 1, 'two': 2, 'three': [2, 3]}

update()¶

更新字典

In [24]:
a = {'one': 1, 'two': 2, 'three': 3}
a.update({'one':4.5, 'four': 9.3})
print(a)
{'one': 4.5, 'two': 2, 'three': 3, 'four': 9.3}

pop() 和 popitem() 方法¶

pop(key) 和 popitem() 都用来删除字典中的键值对,不同的是,pop() 用来删除指定的键值对,而 popitem() 用来随机删除一个键值对,它们的语法格式如下:

In [25]:
a = {'数学': 95, '语文': 89, '英语': 90, '化学': 83, '生物': 98, '物理': 89}
print(a)
a.pop('化学')
print(a)
a.popitem()
print(a)
{'数学': 95, '语文': 89, '英语': 90, '化学': 83, '生物': 98, '物理': 89}
{'数学': 95, '语文': 89, '英语': 90, '生物': 98, '物理': 89}
{'数学': 95, '语文': 89, '英语': 90, '生物': 98}

setdefault() 方法¶

dictname.setdefault(key, defaultvalue) 方法用来返回某个 key 对应的 value

In [27]:
a = {'数学': 95, '语文': 89, '英语': 90}
print(a)
#key不存在,指定默认值
a.setdefault('物理', 94)
print(a)
#key不存在,不指定默认值
a.setdefault('化学')
print(a)
#key存在,指定默认值
a.setdefault('数学', 100)
print(a)
{'数学': 95, '语文': 89, '英语': 90}
{'数学': 95, '语文': 89, '英语': 90, '物理': 94}
{'数学': 95, '语文': 89, '英语': 90, '物理': 94, '化学': None}
{'数学': 95, '语文': 89, '英语': 90, '物理': 94, '化学': None}