Python学习笔记(3)——字典

目录

字典

创建字典

1.使用{}和:直接创建

2.使用dict()函数创建

3.使用fromkeys()函数,创建值相同的字典

 增加字典元素

 删除字典元素,删除字典

1.pop(key,default)

 2.popitem()

3.del

 3.clear()

修改字典元素:

 1.修改单个字典元素:

 2.修改对各字典元素:update()

查找字典元素:

1.根据键找到值,没有指定的键时报错:

2.get(key,default) 根据键找到值,没有指定的键时不报错:

 3.setdefault()根据键找到值,如果有这个键就返回值,如果没有就返回default参数,并添加新的键值对。

 获取字典的键,值,键值对

浅拷贝:

 字典的嵌套:

字典推导式:


字典

1:字典是Python当中唯一实现映射关系的数据类型,元素以键和值的方式存储。

映射关系:表示字典中键都能找到唯一的值与之对应。

2:字典是一种无序的可变的序列,可以对键进行迭代访问。

可变的:字典可以对值进行嵌套,值可以是列表或者字典。

3.字典的格式:

dictname = {'key':'value1', 'key2':'value2', ..., 'keyn':valuen}

dictname 表示变量名   key表示键,value表示值。

4.字典的键是不可变的唯一的,只能用数字,字符串和元组来表示。

创建字典

1.使用{}和:直接创建

>>> #键为列表时报错
>>> dict1 = {[20, 30]: 'great', 30: [1,2,3]}
Traceback (most recent call last):
  File "<pyshell#149>", line 1, in <module>
    dict1 = {[20, 30]: 'great', 30: [1,2,3]}
TypeError: unhashable type: 'list'
>>> #键可以为元组,数字和字符串
>>> dict1 = {(20, 30): 'great', 30: [1,2,3],'dog':100}
>>> dict1
{(20, 30): 'great', 30: [1, 2, 3], 'dog': 100}

2.使用dict()函数创建

表格来自C语言中文网

2.1a = dict(str1=value1, str2=value2, str3=value3)

str 表示字符串类型的键,value 表示键对应的值。

注意:使用此方式创建字典时,字符串不能带引号。

>>> x={"语文":73,"数学":75}
>>> b=dict({"语文":73,"数学":75},英语=75)

2.2 

#方式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)

向 dict() 函数传入列表或元组,而它们中的元素又各自是包含 2 个元素的列表或元组,其中第一个元素作为键,第二个元素作为值。

以方式一为例:

>>> z=dict([("语文",73),("数学",75)])

2.3 

keys = ['one', 'two', 'three'] #还可以是字符串或元组
values = [1, 2, 3] #还可以是字符串或元组
a = dict( zip(keys, values) )

通过应用 dict() 函数和 zip() 函数,可将前两个列表转换为对应的字典。

>>> c=dict(zip(["语文","数学","英语"],[73,75,75]))

3.使用fromkeys()函数,创建值相同的字典

格式:dictname = dict.fromkeys(seq[,value=None)

dictname表示变量名,seq[表示键的列表(可以用字符串,列表,元组),value表示值。

>>> d=dict.fromkeys("Fish",250)
>>> d
{'F': 250, 'i': 250, 's': 250, 'h': 250}

 注意:fromkeys()函数不负责保存。

>>> dict1={}
		    
>>> dict1.fromkeys(['f','i','s','h'],250)
		    
{'f': 250, 'i': 250, 's': 250, 'h': 250}
>>> dict1
		    
{}

键具有唯一性:由两个f,,但是只有一个”f“键。


>>> d=dict.fromkeys("Fffish",250)
>>> d
{'F': 250, 'f': 250, 'i': 250, 's': 250, 'h': 250}

 增加字典元素

>>> x={"语文":73,"数学":75}
>>> x["英语"]=75
>>> x
{'语文': 73, '数学': 75, '英语': 75}

 删除字典元素,删除字典

1.pop(key,default)

>>> d
{'F': 250, 'f': 100, 'i': 250, 's': 250, 'h': 250}
>>> #使用pop()方法
>>> d.pop(h)#查找的键不存在时,报错
Traceback (most recent call last):
  File "<pyshell#41>", line 1, in <module>
    d.pop(h)
NameError: name 'h' is not defined
>>> d.pop('h')
250
>>> d
{'F': 250, 'f': 100, 'i': 250, 's': 250}
>>> #pop(key,default)#设置default,避免报错。
>>> d.pop(h,"无")

 2.popitem()

python新版本会删除字典中最后一个元素。python旧版本随机删除一个元素。

>>> d
{'F': 250, 'f': 100, 'i': 250, 's': 250}
>>> d.popitem()
('s', 250)
>>> d
{'F': 250, 'f': 100, 'i': 250}

3.del

del删除整个字典:

>>> d
{'F': 250, 'f': 100, 'i': 250, 's': 250}
>>> #del
>>> del d
>>> d
Traceback (most recent call last):
  File "<pyshell#54>", line 1, in <module>
    d
NameError: name 'd' is not defined

 del删除字典中某个的元素:

>>> d
{'F': 250, 'f': 100, 'i': 250}
>>> del d['f']
>>> d
{'F': 250, 'i': 250}

del的切片语法不可用: 

>>> d={'F': 250, 'f': 100, 'i': 250}
		    
>>> del d[0:2]
		    
Traceback (most recent call last):
  File "<pyshell#161>", line 1, in <module>
    del d[0:2]
TypeError: unhashable type: 'slice'

 3.clear()

清空字典的元素:

​
>>> b=dict({"语文":73,"数学":75})
>>> b.clear()
>>> b
{}

​

修改字典元素:

 1.修改单个字典元素:

>>> c=dict(zip(["语文","数学","英语"],[73,75,75]))
>>> c["英语"]=80
>>> c
{'语文': 73, '数学': 75, '英语': 80}

 2.修改对各字典元素:update()

>>> c=dict(zip(["语文","数学","英语"],[73,75,75]))
>>> #update()修改多个
>>> c.update({"语文":100,"数学":90})
>>> c
{'语文': 100, '数学': 90, '英语': 80}

查找字典元素:

1.根据键找到值,没有指定的键时报错:

>>> c=dict(zip(["语文","数学","英语"],[73,75,75]))
>>> c['英语']
75
>>> c['英']
Traceback (most recent call last):
  File "<pyshell#75>", line 1, in <module>
    c['英']
KeyError: '英'

2.get(key,default) 根据键找到值,没有指定的键时不报错:

>>> c
{'语文': 90, '数学': 90, '英语': 75}
>>> #get(key,default)
>>> c.get('英',"没有")
'没有'

 3.setdefault()根据键找到值,如果有这个键就返回值,如果没有就返回default参数,并添加新的键值对。

>>> c
{'语文': 90, '数学': 90, '英语': 75}
>>> #setdefault()
>>> c.setdefault('英语',"100")
75
>>> c.setdefault('物理',"100")
'100'
>>> c
{'语文': 90, '数学': 90, '英语': 75, '物理': '100'}

 获取字典的键,值,键值对

items() keys() values()

items() keys() values()是字典的视图对象,分别获取键值对,键和值

>>> c
{'语文': 90, '数学': 90, '英语': 75, '物理': '100'}
>>> #items() keys() values()获取键值对,键和值
>>> key=c.keys()
>>> key
dict_keys(['语文', '数学', '英语', '物理'])
>>> value=c.values()
>>> value
dict_values([90, 90, 75, '100'])
>>> item=c.items()
>>> item
dict_items([('语文', 90), ('数学', 90), ('英语', 75), ('物理', '100')])

 当字典内容发生改变时,视图对象的内容也相应地改变。


>>> c.pop('数学')
90
>>> c
{'语文': 90, '英语': 75, '物理': '100'}
>>> item
dict_items([('语文', 90), ('英语', 75), ('物理', '100')])
>>> key
dict_keys(['语文', '英语', '物理'])
>>> value
dict_values([90, 75, '100'])

浅拷贝:

>>> c
{'语文': 90, '英语': 75, '物理': '100'}
>>> #浅拷贝
>>> #copy()
>>> e=c.copy()
>>> e
{'语文': 90, '英语': 75, '物理': '100'}

 字典的嵌套:

>> #字典的嵌套
>>> #创建
>>> d={'成绩':{'语文': 90, '英语': 75, '物理': '100'}}
>>> d['成绩']['物理']
'100'
>>> #嵌套字典,嵌套序列
>>> d={'成绩':['语文', 90, '英语'], 75:['物理', '100']}
SyntaxError: invalid character in identifier
>>> d={'成绩':['语文', 90, '英语'], 75:['物理', '100']}
>>> d[75][0]
'物理'

字典推导式:

规则和列表推导式一样。可以查看Python学习笔记(1) http://t.csdn.cn/PCIQa

>>> #字典推导式
>>> m={'a':10,'b':90,'c':100,'d':60}
>>> n={v:k for k,v in m.items()}
>>> n
{10: 'a', 90: 'b', 100: 'c', 60: 'd'}
>>> n={v:k for k,v in m.items()if v<80}
>>> n
{10: 'a', 60: 'd'}
>>> #多层for循环
>>> d={x:y for x in [1,3,5] for y in [6,8,10]}
>>> d
{1: 10, 3: 10, 5: 10}
>>> #键x对应的y一直在更新,所以每个键的值都是10.

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值