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}