Python之字典的基础操作

目录

1、字典的创建

 2、修改和添加元素

 3、删除元素

 4、更新字典

 5、复制字典

 6、遍历字典

完整代码: 


本文中使用的字典有的是从开头创建并一直使用的,有的是在某个模块中创建的。如需从总体观看全部代码,请移步到文章最后面。

1、字典的创建

1.1、直接赋值创建字典

语法格式:变量名={键1:值1,键2:值2,...}

info={'第一个:':0,"第二个:":1,"第三个:":2}
print(info)

 1.2、使用内置函数dict()创建字典

        内置函数dict()可通过其他字典、“(键,值)”对的序列或关键字参数来创建字典

#使用内置函数dict()通过其他字典创建
info2=dict(info)
print(info2)

#通过dict和zip结合创建
info4=dict(zip(['num','name','age'],['2003','小明','19']))
print(info4) #{'num': '2003', 'name': '小明', 'age': '19'}

 1.3、使用fromkeys()方法创建字典

        当所有键对应同一个值时,可使用fromkeys()方法创建字典

语法格式:dict.fromkeys(seq[,value])

其中,seq为字典的键的列表,value为键对应的同一值,缺省时默认为None

#当所有键对应同一个值时,使用fromkeys()方法创建
info3=dict.fromkeys(["张三","李四"],18)
print(info3) #{'张三': 18, '李四': 18}

 2、修改和添加元素

        当以指定键为下标给字典元素赋值时,有两种含义:
(1)、若该键在字典中存在,则表示修改该键对应的值

(2)、若该键不存在,则表示添加一个新的键值对,即添加一个新元素到字典中

#修改和添加
#如果该“键”在字典中存在,则表示修改该“键”对应的值
print(info4) #{'num': '2003', 'name': '小明', 'age': '19'}
info4['age']=18
print(info4['age']) #18
#如果该“键”不存在,则表示添加一个新的“键值对”,即添加一个新元素到字典中
info4['sex']='男'
print(info4['sex']) #男
print(info4) #{'num': '2003', 'name': '小明', 'age': 18, 'sex': '男'}

 3、删除元素

        要删除字典中的元素或整个字典,可以使用del命令、clear()方法、pop()方法或popitem()方法。

3.1、del命令:根据键删除字典中的元素

#del根据键删除字典中的元素
del info4['sex']
print(info4) #{'num': '2003', 'name': '小明', 'age': 18}

 3.2、clear()方法:删除字典中的所有元素

#clear()方法删除字典中的所有元素
 info4.clear()
 print(info4) #{}

 3.3、pop()方法:删除指定的键值对,并返回该键的值

语法格式:dict.pop(key[,default])

其中,dict表示字典名,key表示删除的键,default是默认值,当字典中没有要删除的Key时,该方法返回指定的默认值。

#pop()方法删除指定的键值对,并返回该键的值
print(info4.pop('num')) #2003 删除num键值对,并返回原有的值
print(info4.pop('num',0)) #0 #因为前面num已经被删除了,无指定值,返回默认值0

 3.4、popitem()方法:随机删除并返回一个键值对

语法格式:dict.popitem()

其中,dict表示字典名。该方法无参数,返回值为一个随机的键值对

#popitem()方法随机删除并返回一个键值对
info5={'num': '2003', 'name': '小明', 'age': '19'}
print(info5.popitem()) #('age', '19')
print(info5) #{'num': '2003', 'name': '小明'}

 4、更新字典

        update()方法用于将新字典的键值对一次性全部添加到当前字典中,如果两个字典中存在相同的键,则以新字典中的值更新当前字典

语法格式:dict.update(dict1)

其中,dict表示当前字典,dict1表示新字典

#update()方法将新字典的键值对一次性全部添加到当前字典中,如果两个字典中存在相同的值,则以新字典中的值更新当前字典
info6={'num': '2003', 'name': '小明', 'age': {'19','20'}}
#修改num值,同时添加新元素sex
info6.update({'num':2002,'sex':'男'})
print(info6) #{'num': 2002, 'name': '小明', 'age': {'19', '20'}, 'sex': '男'}

 5、复制字典

#copy()方法,返回字典的浅复制,复制父对象及其子对象的引用
info7=info6.copy()
print(info7)

#deepcopy()方法,深复制,完全复制父对象及其子对象,此方法包含在copy模块中
info8=copy.deepcopy(info6)
print(info8)
info9=info6
print("======================================")
info6['num']=2001
info6['age'].remove('20')
#info9是直接赋值,都指向同一个对象。所以info6改变info9也改变
print(info9) #{'num': 2001, 'name': '小明', 'age': {'19'}, 'sex': '男'}

#info7是浅复制,info6和info7是独立的对象,但他们的子对象还是指向同一个对象。所以num没变但age中的子对象变了
print(info7) #{'num': 2002, 'name': '小明', 'age': {'19'}, 'sex': '男'}

#info8是深复制,info6和info8是完全独立的,所以修改info6的值并不会影响info8
print(info8) #{'num': 2002, 'name': '小明', 'age': {'19', '20'}, 'sex': '男'}

 6、遍历字典

        items()方法可以遍历字典中所有的键值对,该方法返回(键,值)元组

语法格式:dict.items() 其中dict表示字典

        当不需要使用字典中的值时,可使用keys()方法只遍历字典中的键

语法格式:dict.keys()

        当只需要使用字典中的值时,可使用values()方法

语法格式:dict.values()

#item()方法遍历字典中所有的键值对,返回可遍历的(键,值)元组
#key()只遍历字典中的键
#values()遍历字典中的值
#例:
dictionary={
    '张三':'zhangsan',
    '李四':'lisi',
    '王五':'wangwu',
    '赵六':'zaoliu',
}
print('所有键值对:')
for e in dictionary.items():
    print(e)
print('所有键:')
for x in dictionary.keys():
        print(x,end=' ')
print()
print('所有值:')
for i in dictionary.values():
        print(i,end=' ')

# 所有键值对:
# ('张三', 'zhangsan')
# ('李四', 'lisi')
# ('王五', 'wangwu')
# ('赵六', 'zaoliu')
# 所有键:
# 张三 李四 王五 赵六 
# 所有值:
# zhangsan lisi wangwu zaoliu 

完整代码: 

#创建字典
import copy

info={'第一个:':0,"第二个:":1,"第三个:":2}
print(info)

#使用内置函数dict()通过其他字典创建
info2=dict(info)
print(info2)

#通过dict和zip结合创建
info4=dict(zip(['num','name','age'],['2003','小明','19']))
print(info4) #{'num': '2003', 'name': '小明', 'age': '19'}

#当所有键对应同一个值时,使用fromkeys()方法创建
info3=dict.fromkeys(["张三","李四"],18)
print(info3) #{'张三': 18, '李四': 18}
print("======================================")

#修改和添加
#如果该“键”在字典中存在,则表示修改该“键”对应的值
print(info4) #{'num': '2003', 'name': '小明', 'age': '19'}
info4['age']=18
print(info4['age']) #18
#如果该“键”不存在,则表示添加一个新的“键值对”,即添加一个新元素到字典中
info4['sex']='男'
print(info4['sex']) #男
print(info4) #{'num': '2003', 'name': '小明', 'age': 18, 'sex': '男'}
print("======================================")

#删除元素
#del根据键删除字典中的元素
del info4['sex']
print(info4) #{'num': '2003', 'name': '小明', 'age': 18}

#clear()方法删除字典中的所有元素
# info4.clear()
# print(info4) #{}

#pop()方法删除指定的键值对,并返回该键的值
print(info4.pop('num')) #2003 删除num键值对,并返回原有的值
print(info4.pop('num',0)) #0 #因为前面num已经被删除了,无指定值,返回默认值0

#popitem()方法随机删除并返回一个键值对
info5={'num': '2003', 'name': '小明', 'age': '19'}
print(info5.popitem()) #('age', '19')
print(info5) #{'num': '2003', 'name': '小明'}
print("======================================")

#更新字典
#update()方法将新字典的键值对一次性全部添加到当前字典中,如果两个字典中存在相同的值,则以新字典中的值更新当前字典
info6={'num': '2003', 'name': '小明', 'age': {'19','20'}}
#修改num值,同时添加新元素sex
info6.update({'num':2002,'sex':'男'})
print(info6) #{'num': 2002, 'name': '小明', 'age': {'19', '20'}, 'sex': '男'}
print("======================================")

#复制字典
#copy()方法,返回字典的浅复制,复制父对象及其子对象的引用
info7=info6.copy()
print(info7)

#deepcopy()方法,深复制,完全复制父对象及其子对象,此方法包含在copy模块中
info8=copy.deepcopy(info6)
print(info8)
info9=info6
print("======================================")
info6['num']=2001
info6['age'].remove('20')
#info9是直接赋值,都指向同一个对象。所以info6改变info9也改变
print(info9) #{'num': 2001, 'name': '小明', 'age': {'19'}, 'sex': '男'}

#info7是浅复制,info6和info7是独立的对象,但他们的子对象还是指向同一个对象。所以num没变但age中的子对象变了
print(info7) #{'num': 2002, 'name': '小明', 'age': {'19'}, 'sex': '男'}

#info8是深复制,info6和info8是完全独立的,所以修改info6的值并不会影响info8
print(info8) #{'num': 2002, 'name': '小明', 'age': {'19', '20'}, 'sex': '男'}
print("======================================")

#遍历
#item()方法遍历字典中所有的键值对,返回可遍历的(键,值)元组
#key()只遍历字典中的键
#values()遍历字典中的值
#例:
dictionary={
    '张三':'zhangsan',
    '李四':'lisi',
    '王五':'wangwu',
    '赵六':'zaoliu',
}
print('所有键值对:')
for e in dictionary.items():
    print(e)
print('所有键:')
for x in dictionary.keys():
        print(x,end=' ')
print()
print('所有值:')
for i in dictionary.values():
        print(i,end=' ')

 

  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇安.YuAn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值