Python学习5——字典(dict)

字典是python中的映射类型,是一种“键值对”(key-value)数据结构。

key是任意不可变的类型对象,通常是字符串和数字,不能是list(list可以改变)。

value可以是任何类型的数据。

字典可以通过dict()和一对花括号创建一个空字典(d={}),花括号内键值对用(:)隔开,多个键值对之间用(,)隔开。

 

创建空字典:

>>> d = {}

>>> d

{}

>>> d1 = dict()

>>> d1

{}

>>> d1 == d

True

 

可以通过传入参数进行初始化。

传入参数有两种形式:一种是,序列型数据list或tuple,它每个元素必须又含有两个子元素,以满足key-value对;一种是,name=value形式的参数。

>>> d = {'a':1,'b':2,'c':3}

>>> d

{'a': 1, 'b': 2, 'c': 3}

>>> d1 = dict(a=1,b=2,c=3)    #name=value形式的参数

>>> d1

{'a': 1, 'b': 2, 'c': 3}

>>> d2 = dict([('a',1),('b',2)])

>>> d2

{'a': 1, 'b': 2}

 

用for循环创建一个字典:

>>> dd = {x:x+x for x in range(5)}

>>> dd

{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}

 

list可以做value,但不能做key

>>> d = {'a':[1,2,3]}

>>> d

{'a': [1, 2, 3]}

>>> d1 = {[1,2,3],'a'}

Traceback (most recent call last):

  File "<pyshell#25>", line 1, in <module>

    d1 = {[1,2,3],'a'}

TypeError: unhashable type: 'list'

 

字典通过键访问值,有2种方式:

>>> d = dict(a=1,b=2,c=3)

>>> d

{'a': 1, 'b': 2, 'c': 3}

>>> d['b']       #通过‘b’访问到值

2

>>> d.get('a')    #通过get(key)方法访问值

1

>>> d['c']=5

>>> d

{'a': 1, 'b': 2, 'c': 5}

 

字典的变更

>>> d = dict(a=1,b=2,c=3)

>>> d

{'a': 1, 'b': 2, 'c': 3}

>>> d['b']=5    #修改某个键的值

>>> d

{'a': 1, 'b': 5, 'c': 3}

>>> d['d']=7        #新增一个键值对

>>> d

{'a': 1, 'b': 5, 'c': 3, 'd': 7}

>>> del d['a']        #删除某个键值对

>>> d

{'b': 5, 'c': 3, 'd': 7}

 

sorted()把字典的所有key当做一个列表(或元组)进行排序

>>> d = dict(a=1,b=2,c=3,d=4)

>>> d

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

>>> sorted(d)

['a', 'b', 'c', 'd']

 

遍历key:

>>> for key in d:

print(key)

 

 

a

b

c

d

clear()可以清空一个字典:

 

fromkeys()通过一个序列来初始化字典:

>>> d={}

>>> d.fromkeys([1,2,3])

{1: None, 2: None, 3: None}

>>> d.fromkeys([1,2,3],1)

{1: 1, 2: 1, 3: 1}

 

update()用一个字典来更新另一字典:

>>> x = d.fromkeys([1,2,3])

>>> x

{1: None, 2: None, 3: None}

>>> x.update({1:'a',2:'b'})

>>> x

{1: 'a', 2: 'b', 3: None}

 

将字符串格式设置功能用于字典——format_map

>>> template = '''<html>

<head><title>{title}</title></head>

<body>

<h1>{title}</h1>

<p>{text}</p>

</body>'''

>>> data = {'title':'My Home Page','text':'Welcom to my home page'}

>>> print(template.format_map(data))

<html>

<head><title>My Home Page</title></head>

<body>

<h1>My Home Page</h1>

<p>Welcom to my home page</p>

</body>

 

copy方法返回一个新字典,这个方法执行的是浅复制,因为值本身就是原件。

>>> x = {'username':'admin','abc':['foo','bar','baz']}

>>> y = x.copy()

>>> y

{'username': 'admin', 'abc': ['foo', 'bar', 'baz']}

>>> y['abc'].remove('bar')

>>> y['username']='admin123'

>>> y

{'username': 'admin123', 'abc': ['foo', 'baz']}

>>> x

{'username': 'admin', 'abc': ['foo', 'baz']}

 

浅复制,当替换副本中的值时,原件不受影响(‘username’对应的值)。但是修改副本中的值,原件也将发生变化(‘abc’列表变化)。
为避免上面的情况,可以执行深复制。即同时复制值及其包含的所有值。

>>> from copy import deepcopy

>>> d = {}

>>> d['names'] = ['alfred','bertrand']

>>> c = d.copy()

>>> e = deepcopy(d)

>>> d['names'].append('clive')

>>> c

{'names': ['alfred', 'bertrand', 'clive']}

>>> e

{'names': ['alfred', 'bertrand']}

转载于:https://www.cnblogs.com/suancaipaofan/p/11069081.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,今天我们来学习Python字典Dictionary)。 字典是一种无序的、可变的数据类型,它以键值对(key-value)的形式存储数据,其键(key)必须是唯一的,而值(value)可以是任意数据类型。字典用花括号{}表示,每个键值对之间用逗号隔开。 下面是一个简单的字典示例: ``` my_dict = {'name': '张三', 'age': 18, 'gender': '男'} ``` 这个字典,'name'、'age'、'gender'就是键,而'张三'、18、'男'就是相应的值。 可以使用`dict()`函数来创建一个字典,也可以使用`{}`来创建一个空字典。 接下来,我们来看一些常用的字典操作。 1. 访问字典元素 可以通过键来访问字典的元素,例如: ``` print(my_dict['name']) # 输出:张三 ``` 如果键不存在,则会抛出KeyError异常。 2. 修改字典元素 可以通过键来修改字典的元素,例如: ``` my_dict['age'] = 20 print(my_dict) # 输出:{'name': '张三', 'age': 20, 'gender': '男'} ``` 3. 添加字典元素 可以通过键来添加字典的元素,例如: ``` my_dict['address'] = '北京市' print(my_dict) # 输出:{'name': '张三', 'age': 20, 'gender': '男', 'address': '北京市'} ``` 4. 删除字典元素 可以通过键来删除字典的元素,例如: ``` del my_dict['gender'] print(my_dict) # 输出:{'name': '张三', 'age': 20, 'address': '北京市'} ``` 5. 字典长度 可以使用`len()`函数来获取字典的长度,例如: ``` print(len(my_dict)) # 输出:3 ``` 6. 字典遍历 可以使用`items()`方法来遍历字典的每一个键值对,例如: ``` for key, value in my_dict.items(): print(key, value) ``` 输出: ``` name 张三 age 20 address 北京市 ``` 通过上述操作,我们可以初步了解字典的基本用法。在实际应用字典是非常重要的数据类型,它可以用来存储和处理各种复杂的数据结构。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值