Python学习第三十一天—字典(中)

[复制链接]
15271953841 发表于 2024-2-24 07:10:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 15271953841 于 2024-2-24 07:13 编辑

Python 3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
字典一出手,我们就知道有没有
在映射关系上,列表搞不过字典。

x={"吕布","关羽"}
type(x)
<class 'set'>
y={"吕布":"飞将","关羽":"云长"}        (建:值,key:value,冒号左边为字典的键,右边为字典的值)
type(y)
<class 'dict'>
y["吕布"]
'飞将'
y["刘备"]="玄德"
y
{'吕布': '飞将', '关羽': '云长', '刘备': '玄德'}

创建字典的六种方法:
a={'吕布': '飞将', '关羽': '云长', '刘备': '玄德'}
b=dict(吕布='飞将',关羽='云长',刘备='玄德')        (第二种方法要求键不能加引号,学习函数时就无师自通了)
c=dict([('吕布','飞将'),('关羽','云长'),('刘备','玄德')])
d=dict({'吕布':'飞将','关羽':'云长','刘备':'玄德'})       (第四种方法就是第一种方法直接写入dict()函数中)
e=dict({'吕布':'飞将','关羽':'云长'},刘备='玄德')         (第五种方法是第一和第二的混合,注意第二种方法的键不能加引号)
f=dict(zip(["吕布","关羽","刘备"],["飞将","云长","玄德"]))    (zip就像拉链一样,把两个列表拉到一起,构成与第三种方法一样的形式)
a==b==c==d==e==f
True
a
{'吕布': '飞将', '关羽': '云长', '刘备': '玄德'}
b
{'吕布': '飞将', '关羽': '云长', '刘备': '玄德'}
c
{'吕布': '飞将', '关羽': '云长', '刘备': '玄德'}
d
{'吕布': '飞将', '关羽': '云长', '刘备': '玄德'}
e
{'吕布': '飞将', '关羽': '云长', '刘备': '玄德'}
f
{'吕布': '飞将', '关羽': '云长', '刘备': '玄德'}

字典的增、删、改、查
fromkeys(iterable[,values]) 创建一个新的字典,values只是给创建的字典的所有的键初始化一个值。
d=dict.fromkeys("FishC",250)
d
{'F': 250, 'i': 250, 's': 250, 'h': 250, 'C': 250}
d["F"]=70
d
{'F': 70, 'i': 250, 's': 250, 'h': 250, 'C': 250}
d["鱼"]=67             (如果找不到对应的键,就会增加一个新的键值对)
d
{'F': 70, 'i': 250, 's': 250, 'h': 250, 'C': 250, '鱼': 67}
序列与字典的另一个重大区别是:
在序列中,元素是可以重复的;而在字典中的像(键值对),一个键就对应一个值,并不会说存在重复的键,重复了,它就会用新的值去覆盖旧的值。


删 pop(key[,default])
d.pop("s")
250
d
{'F': 70, 'i': 250, 'h': 250, 'C': 250, '鱼': 67}
d.pop("狗")                           (pop()一个不存在的键,它就会抛出异常)
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    d.pop("狗")
KeyError: '狗'
d.pop("狗","没有")
'没有'

类似的popitem()函数,在Python3.7版本之前,它是随机删除一个键值对,3.7之后,它是删除最后一个键值对。
d.popitem()
('鱼', 67)
d
{'F': 70, 'i': 250, 'h': 250, 'C': 250}
del d["i"]
d
{'F': 70, 'h': 250, 'C': 250}
del d                       (干掉整个字典d)
d
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    d
NameError: name 'd' is not defined. Did you mean: 'id'?
d=dict.fromkeys("FishC",250)
d
{'F': 250, 'i': 250, 's': 250, 'h': 250, 'C': 250}
d.clear()                      (只清空字典d中的内容,用clear())
d
{}                            (d变量就变成了一个空字典)
关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鄂ICP备13007585号-4

在本发帖
关注公众号
QQ客服返回顶部