1.基本的增刪改查
def test_1():
# 增刪改查
dict1 = {'a': 1, 'b': 2}
dict1['c'] = 3
assert {'a': 1, 'b': 2, 'c': 3} == dict1, 'dict 新增失敗'
del dict1['b']
assert {'a': 1, 'c': 3} == dict1, 'dict 刪除失敗'
dict1['c'] = 4
assert {'a': 1, 'c': 4} == dict1, 'dict 修改失敗'
c = dict1['c']
assert 4 == c, 'dict 查詢失敗'
pass
2. in和enumerate方法
def test_2():
# in, enumerate
dict1 = {'a': 1, 'b': 2}
indexs = [i for i, v in enumerate(dict1.items()) if v[0] == 'b']
assert [1] == indexs, 'dict enumerate error'
assert 'a' in dict1, 'dict in error'
pass
3.方法: setdefault,update,get,pop,popitem
def test_3():
# setdefault,update,get,pop,popitem
# setdefault 如果沒有則增加,有則不變
dict1 = {'a': 1, 'b': 2}
dict1.setdefault('c', 4)
assert {'a': 1, 'b': 2, 'c': 4}, 'dict setdefault error'
dict1.setdefault('b', 1)
assert {'a': 1, 'b': 2, 'c': 4} == dict1, 'dict setdefault b error'
dict1.update({'c': 5})
assert {'a': 1, 'b': 2, 'c': 5} == dict1, 'dict update error'
c = dict1.get('c', 1)
assert 5 == c, 'dict get error'
f = dict1.get('f', 1)
assert 1 == f, 'dict get f error'
dict1.pop('c')
assert {'a': 1, 'b': 2} == dict1, 'dict pop error'
dict1.popitem()
assert {'a': 1} == dict1, 'dict popitem error'
pass
4. sort
def test_4():
# sort
dict1 = {'b': 2, 'a': 1}
dict2 = dict(sorted(dict1.items(), key=lambda kv: kv[0]))
assert {'a': 1, 'b': 2} == dict2, 'dict sorted 1 error'
dict1 = {'b': 2, 'a': 1, 'c': 1}
dict2 = dict(sorted(dict1.items(), key=lambda kv: (kv[1], kv[0])))
assert {'a': 1, 'c': 1, 'b': 2}
pass
5.淺復(fù)制和深復(fù)制
import copy
def test_5():
# 淺復(fù)制 和 深度復(fù)制
# 1.淺復(fù)制:不改變原字典
dict1 = {'a': 1, 'b': 2}
dict2 = dict1.copy()
dict2.update({'b': 1})
assert {'a': 1, 'b': 2} == dict1, 'dict copy 1 error'
assert {'a': 1, 'b': 1} == dict2, 'dict copy 1.1 error'
# 2.淺復(fù)制:改變原字典--子對象
dict1 = {'a': 1, 'b': {'c': 1}}
dict2 = dict1.copy()
dict2['b'].setdefault('d', 2)
assert {'a': 1, 'b': {'c': 1, 'd': 2}} == dict1, 'dict copy 2 error'
assert {'a': 1, 'b': {'c': 1, 'd': 2}} == dict2, 'dict copy 2.1 error'
# 3.深復(fù)制:不改變原字典
dict1 = {'a': 1, 'b': {'c': 1}}
dict2 = copy.deepcopy(dict1)
dict2['b'].setdefault('d', 2)
assert {'a': 1, 'b': {'c': 1}} == dict1, 'dict copy 3 error'
assert {'a': 1, 'b': {'c': 1, 'd': 2}} == dict2, 'dict copy 3.1 error'
pass
6.dict的各種初始化
def test_6():
# 方法:dict(p)
dict1 = {}
assert {} == dict1, 'dict new 1 error'
dict1 = dict()
assert {} == dict1, 'dict new 2 error'
dict1 = dict({'a': 1})
assert {'a': 1} == dict1, 'dict new 3 error'
dict1 = dict([('a', 1), ('b', 2)])
assert {'a': 1, 'b': 2} == dict1, 'dict new 4 error'
dict1 = dict(a=1, b=2)
assert {'a': 1, 'b': 2} == dict1, 'dict new 5 error'
params = {'a': 1, 'b': 2}
dict1 = dict(**params)
assert {'a': 1, 'b': 2} == dict1, 'dict new 6 error'
pass
審核編輯:劉清
-
python
+關(guān)注
關(guān)注
56文章
4828瀏覽量
87010
發(fā)布評論請先 登錄
C++ 與 Python:樹莓派上哪種語言更優(yōu)?

簡析Modbus與MQTT的區(qū)別
python入門圣經(jīng)-高清電子書(建議下載)
零基礎(chǔ)入門:如何在樹莓派上編寫和運(yùn)行Python程序?

Triton編譯器支持的編程語言
Python中dict支持多個(gè)key的方法
編程語言在人工智能中的使用
對比Python與Java編程語言
NPU支持的編程語言有哪些
C語言與其他編程語言的比較
Python中多線程和多進(jìn)程的區(qū)別

單片機(jī)STM32可以用Python寫嗎?可以的開發(fā)板有哪些?

如何利用python和API查詢IP地址?
使用Python進(jìn)行Ping測試

評論