|
|
发表于 2026-2-5 23:52:23
|
显示全部楼层
改 - 字典的修改
d = dict.fromkeys("FishC")
d
{'F': None, 'i': None, 's': None, 'h': None, 'C': None}
d["s"] = 115
d
{'F': None, 'i': None, 's': 115, 'h': None, 'C': None}
d.update({"i":105, "h":104})
d
{'F': None, 'i': 105, 's': 115, 'h': 104, 'C': None}
d.update(F="70", C="67") -------注意这里的键F和C不加引号""
d
{'F': '70', 'i': 105, 's': 115, 'h': 104, 'C': '67'}
-----------
查 - 字段的查询
d["C"]
'67'
d["c"]
KeyError: 'c' ------用键直接检索时,如果该键不存在会报错
d.get("c", "这里没有c")
'这里没有c' --------检索对象不存在,返回了指定的参数
d.setdefault("C", "code")
'67' -----------因为键"C"已经存在,所以后面的参数不起作用,依然返回原来的键的值
d.setdefault("c", "code")
'code' ----------因为键"c"不存在,所以第二个参数起作用,将新的键值对追加到字典的最后一组中
d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67', 'c': 'code'}
----------------
获取 字典的 键值对,键,值, 的视图对象
d = {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67', 'c': 'code'}
keys = d.keys()
values = d.values()
items = d.items()
items
dict_items([('F', 70), ('i', 105), ('s', 115), ('h', 104), ('C', '67'), ('c', 'code')])
keys
dict_keys(['F', 'i', 's', 'h', 'C', 'c'])
values
dict_values([70, 105, 115, 104, '67', 'code'])
d.pop("c")
'code'
d --------从字典弹出并删除"c"的键值对后,字典的视图对象也相应动态变化,如下所示:
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67'}
items
dict_items([('F', 70), ('i', 105), ('s', 115), ('h', 104), ('C', '67')])
keys
dict_keys(['F', 'i', 's', 'h', 'C'])
values
dict_values([70, 105, 115, 104, '67'])
--------------------
字典的浅拷贝 copy()
d = {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67'}
e = d.copy()
e
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67'}
e.pop("C")
'67'
e
{'F': 70, 'i': 105, 's': 115, 'h': 104}
d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67'}
---------------------
e
{'F': 70, 'i': 105, 's': 115, 'h': 104}
d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67'}
len(d) -----查询字典中键值对的个数
5
len(e)
4
"C" in d
True -------判断一个键是否在/不在 字典中
'c' not in d
True
----------------------------
将字典转换为列表
list(d)
['F', 'i', 's', 'h', 'C']
list(d.keys()) ---------- 效果相当于list(),将字典的键转换为列表
['F', 'i', 's', 'h', 'C']
list(d.values()) ------------转换值
[70, 105, 115, 104, '67']
list(d.items()) ----------转换键值对
[('F', 70), ('i', 105), ('s', 115), ('h', 104), ('C', '67')]
---------------------------
e = iter(d)
list(e)
['F', 'i', 's', 'h', 'C']
list(e)
[]
e = iter(d)
next(e)
'F'
next(e)
'i'
next(e)
's'
next(e)
'h'
next(e)
'C'
next(e)
Traceback (most recent call last):
File "<pyshell#68>", line 1, in <module>
next(e)
StopIteration
--------------------------------
reversed() 字典内部元素重新排序 ,仅支持python 3.7以上
d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67'}
reversed(d.values())
<dict_reversevalueiterator object at 0x000001FDD93EAE80>
d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67'}
list(reversed(d.values()))
['67', 104, 115, 105, 70]
['67', 104, 115, 105, 70]
['67', 104, 115, 105, 70]
d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': '67'}
reversed(d.items())
<dict_reverseitemiterator object at 0x000001FDD93EB0B0>
list(reversed(d.items()))
[('C', '67'), ('h', 104), ('s', 115), ('i', 105), ('F', 70)]
--------------------------------------
字典的嵌套
d = {"吕布":{"语文":60, "数学":70, "英语":80}, "关羽":{"语文":100, "数学":70, "英语":30}} ----字典里面的一个值是另外一个字典
d["吕布"]
{'语文': 60, '数学': 70, '英语': 80}
d["吕布"]["数学"]-------字典里面嵌套的还是字典,所以都要用键来检索
70
d = {"吕布":[60, 70, 80], "关羽":{"语文":100, "数学":70, "英语":30}}
d["吕布"][1] ------字典里面嵌套的是列表,所以第二个检索参数用索引值检索
70
----------------------------------------
字典的推导式
d = {"F":70, "i":105, "s":115, "h":104, "C":67}
b = {v:k for k,v in d.items()} -------通过推导式让键和值互换
b
{70: 'F', 105: 'i', 115: 's', 104: 'h', 67: 'C'}
c = {v:k for k,v in d.items() if v > 100} --------进一步追加条件
c
{105: 'i', 115: 's', 104: 'h'}
d = {x:ord(x) for x in "FishC"} ---------调用ord函数求字符的编码值
d
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
e = {x:y for x in [1, 3, 5] for y in [2, 4, 6]}
e
{1: 6, 3: 6, 5: 6} -------因为字典的键不可以重复,所以只会保留最后一次更新的键 |
|