python之字典基础相关
描述:
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
键必需是唯一的,值可以取任何数据类型
字典的创建
dict1 = {} #创建一个空字典,等价于:dict1 = dict()
dict2 = {"key1": "value1"} # 等价于:dict2 = dict(key1="value1")
dict3 = {"key1": "value1", "key2": "value2"} # 等价于:dict3 = dict(key1="value1", key2="value2")
dict4 = dict([("key1","value1"), ("key2","value2")]) # 等价于:dict4 = dict({"key1": "value1"}, key2="value2")
dict5 = dict(zip(["key1","key2"],["value1","value2"])) # 等价于:dict5 = dict({"key1": "value1", "key2": "value2"})
字典的修改/编辑
# 修改字典中存在的键,通过key来修改值
#print(f"修改前的字典为:{dict2}")
dict2["key1"] = "update_value1"
#print(f"修改key1=update_value1后的字典为:{dict2}")
# 修改字典中不存在的键,通过key来修改值。因字典中不存在这个键,故相当于添加一个键
#print(f"修改前的字典为:{dict2}")
dict2["key2"] = "value2"
#print(f"修改key2=value1后的字典为:{dict2}")
# 使用 update() 修改多个键值对(键在字典中存在)
dict6 = dict.fromkeys("hello")
#print(f"修改前的字典为:{dict6}")
dict6.update({'h':12, 'e':13}) # 等价于:dict6.update(h='12', e='13'})
#print(f"修改后的字典为:{dict6}")
# 使用 update() 修改多个键值对(键在字典中不存在)
dict6 = dict.fromkeys("hello")
#print(f"修改前的字典为:{dict6}")
dict6.update({'r':12, 'j':13}) # 等价于:dict6.update(r='12', j='13'})
#print(f"修改后的字典为:{dict6}")
查询
print()
print(f"字典【{dict5}】中key1的值为:{dict5['key1']}") #使用键来查找值,下标法
print(f"字典【{dict5}】中key2的值为:{dict5.get('key2')}") #使用键来查找值,get()方法,键存在的情况
#当需要查询的键不存在的时候,会报异常,可以通过get()方法中的第二个参数,来指定返回的描述值,setdefault()指定默认值
print(f"字典【{dict5}】中key3的值为:{dict5.get('key3','key3键不存在')}")
print(f"字典【{dict5}】中使用setdefault指定key4的值为:{dict5.setdefault('key4','value4')}")
print(f"最终字典:{dict5}")
print()
print("=========使用setdefault指定key2的值为value5================")
# 使用setdefault方法时键在字典中存在时不会对已存在的键设置新的值,相当于查询
print(f"字典【{dict5}】中使用setdefault指定key2的值为:{dict5.setdefault('key2','value5')}")
print(f"最终字典:{dict5}")
print("-------------------------------------------------------------")
print(f"字典【{dict5}】中所有的项: {dict5.items()}")
print(f"字典【{dict5}】中所有的键: {dict5.keys()}")
print(f"字典【{dict5}】中所有的值: {dict5.values()}")
print(f"字典【{dict5}】中所有的键的列表: {list(dict5)}") # 键的列表
print(f"字典【{dict5}】中所有的值的列表: {list(dict5.values())}") # 值的列表
dict7 = dict5.copy()
print(f"字典【{dict5}】浅拷贝后,结果: {dict7}")
删除
#使用pop()删除字典中指定元素
#print(f"删除前的字典为:{dict2}")
dict2.pop('key1') #删除存在键的情况;如删除的键不存在,则会报异常:KeyError(可使用dict2.pop('key3','键不存在')返回具体描述)
#print(f"删除key1键后的字典为:{dict2}")
#使用popitem()删除字典中最后一个键值对(python 3.7 以后版本)
#print(f"删除前的字典为:{dict3}")
dict3.popitem()
#print(f"popitem()删除后的字典为:{dict3}")
#使用del 删除 某个键或整个字典
#print(f"删除前的字典为:{dict4}")
del dict4['key1'] #删除某个具体的键
#print(f"删除键:key1 后的字典为:{dict4}")
del dict4 # 删除整个字典,访问这个字典时提示:未定义
#print(f"删除字典dict4后的字典为:{dict4}")
#使用clear()清空字典
#print(f"字典元素清空前为:{dict5}")
dict5.clear()
#print(f"字典元素清空后为:{dict5}")
字典推导式
print("-------------------------------------------------------------")
#print(f"待处理的字典{dict6}")
dict7 = {k:ord(k) for k in dict6.keys()} #字典推导式
#print(f"提取其中的键并输出对应的ASCII编码后的字典: {dict7}")
print("-------------------------------------------------------------")
dict7 = {i:pow(i,2) for i in range(11) if i % 2 == 0}
print(f"1~10中偶数的平方: {dict7}")
字典排序
根据键排序
dict_1 = {3: 'ee', 2: "aa", 1: '54'}
print({i[0]: i[1] for i in sorted(dict_1.items(), key=lambda x: x[0])})
根据值排序
dict_1 = {3: 'ee', 2: "aa", 1: '54'}
print({i[0]: i[1] for i in sorted(dict_1.items(), key=lambda x: x[1])})

浙公网安备 33010602011771号