python学习笔记(一)——深入探究dict字典操作

了解python中字典的更加详细具体的操作,更灵活高效的使用python
dict的基本形式是键-值对(item),在本文中用key跟value表示

1.字典的创建

法一:直接使用{}创建,这是最常用的创建方式,通常是创建一个空字典,在往里面添加元素对

print('创建')
dic={'a':1,'b':2}                     #创建一
print(type(dic),dic)
#out:	<class 'dict'> {'a': 1, 'b': 2}

在此引申出dict的几个性质:
1、dict的key有唯一性,如果存在对相同的key进行赋值,会将前一个值覆盖,在初始声明时亦是如此,key的value是他最后一个的赋值。

dic={'a':1,'b':2,'a':3}
print(dic)
#out:	{'a': 3, 'b': 2}

2、dict的key值必须是可哈希的对象,在python中可哈希的对象都是不变对象,也就是说列表,字典,集合等不能作为dict的key值,但是元组可以

dic={'a':1,'b':2,['c','d']:3}
print(dic)
#out:	error

dic={'a':1,'b':2,('c','d'):3}
print(dic)
#out: 	{'a': 1, 'b': 2, ('c', 'd'): 3}

法二:利用dict()函数创建,这样写较为简洁

dic=dict(a=11,b=22)                   #创建二
print(type(dic),dic)
#out:	<class 'dict'> {'a': 11, 'b': 22}

但是这样创立的字典会默认key值是字符串,不能使用变量、数值或元组作为key键。但对于value没有限制

a='ABC'
dic=dict(a=123,b='abc',c=[1,2,3])
print(dic)
#out:	{'a': 123, 'b': 'abc', 'c': [1, 2, 3]}

法三:将元组对列表转化为字典

dic=dict([('a',111),('b',222)])       #创建三,将元组对转化为字典。zip函数
print(type(dic),dic)
#out:	<class 'dict'> {'a': 111, 'b': 222}

通常可以利用zip函数将两个列表转化为元组对再合并称为字典。dict()函数中的对象要是一个可迭代对象,zip的返回值是一个迭代器,而并不是一个直接的列表

lst1=['a','b','c']
lst2=[1,2,3]
dic=dict((zip(lst1,lst2)))
print(dic)
#out:	{'a': 1, 'b': 2, 'c': 3}

法四:已知键集合,利用fromkeys初始化所有的键

dic={}.fromkeys(['a','b','c'],0)      #创建四,已知建集合,初始化所有的键
print(type(dic),dic,'\n')
#out:	<class 'dict'> {'a': 0, 'b': 0, 'c': 0} 

需要注意的是fromkeys只能进行初始化操作,而不是添加。如果dic中原来存在item,会被全部清除,只保留新的初始值

dic1={'a':1,'b':2}
dic1=dic1.fromkeys(['x','y','z'],10)
print(dic1)
#out:	{'x': 10, 'y': 10, 'z': 10}
dic2={'a':1,'b':2}.fromkeys(['x','y','z'],10)
print(dic1)
#out:	{'x': 10, 'y': 10, 'z': 10}

OK
现在让我们来总结下字典创建的四种方式:

  • 第一种,最常用的{}直接创建,要注意字典的每个键都是唯一的,重复的赋值会覆盖,且只有可哈希的对象能作为键,元组可以,列表不行。
  • 第二种用dict(a=1),默认键为字符串,不能是变量跟元组。
  • 第三种dict()加元组对列表,常跟zip函数使用。
  • 第四种{}.fromkeys,在已知所有键值的时候统一进行初始化,会覆盖之前dic中的所有值,不能用作添加。

2.字典的查询

字典中的元素都是以键-值对的形式存在的,可以分别对这些项进行查询

print('查询')
dic={}.fromkeys(['a','b','c'],0) 
print(dic.items(),'$',list(dic.items()))
print(dic.keys(),'$',list(dic.keys()))
print(dic.values(),'$',list(dic.values()))
#out:	
#查询
#dict_items([('a', 0), ('b', 0), ('c', 0)]) $ [('a', 0), ('b', 0), ('c', 0)]
#dict_keys(['a', 'b', 'c']) $ ['a', 'b', 'c']
#dict_values([0, 0, 0]) $ [0, 0, 0]

dic的items(),keys(),values()都是专门的类别,可以转化为列表进行操作。
对dic的排序操作可以将dic转化为列表后操作,也可以直接用sorted()函数进行操作,但是操作之后返回的是列表。

dic={'a':5,'b':4,'c':3}
dic=sorted(dic,key=lambda x:dic[x])
print(dic)
#out:	['c', 'b', 'a']

3.字典的添加与修改

单个元素的添加与修改,直接用dic的键进行添加或修改

dic={'a':1,'b':2,'c':3}
dic['a']=4
dic['d']=4
print(dic)
#out:	{'a': 4, 'b': 2, 'c': 3, 'd': 4}

批量添加修改:使用字典自带的update()函数

dic={'a':1,'b':2,'c':3}
dic.update({'a':4,'d':4,'e':5})
print(dic)
#out:	{'a': 4, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
dic2={'x':1,'y':1}
dic.update(dic2)
print(dic)
#out:	{'a': 4, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'x': 1, 'y': 1}

先判断是否存在,再进行添加。在实际操作中我们经常会遇到这种情况,需要先判断key是否存在dic中,如果不存在就创建一个新的item。可以用if语句判断,也可以用字典自带的setdefault()函数直接实现。

dic={'a':1,'b':2,'c':3}
dic.setdefault('a',4)     #a已经存在与dic中所以不进行修改
dic.setdefault('d',4)     #d不在dic中,添加
print(dic)
#out:	{'a': 1, 'b': 2, 'c': 3, 'd': 4}

合并字典将多个字典进行合并,如果有重叠部分,后面的item会覆盖之前的item

dic1={'a':1,'b':2,'c':3}
dic2={'d':4,'e':5}
dic3={'a':9,'f':6}
dic={**dic1,**dic2,**dic3}
print(dic)
#out:	{'a': 9, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}

OK
现在让我们来回顾一下字典的添加与修改:

  • 首先最简单的单个元素的添加与修改,直接dic[key]=value。
  • 如果需要批量添加与修改使用dic.update(dic*)。
  • 合并字典其实也可以视为对字典进行批量修改的一种方式dic={**dic1,**dic2,**dic3}。
  • 如果要先对key进行判断是否存在再进行添加,可以使用setdefault(key,value),每次只能添加一个,如果存在的话就不添加,不能进行修改。

4.字典的删除

单个元素删除,使用pop()方法

dic={'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
n=dic.pop('a')
m=dic.pop('x',404)
print(n,m,dic)
#out:	1 404 {'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}

dic.pop() 根据key删除单个元素,不能省略参数。可以包含一个或两个参数,第一个为要删除的key,删除后返回key对应的value。第二个参数为如果要删除的key不存在时的返回值。如果只有一个参数,而key又不存在则会报错

随机删除一个item:popitem()

dic={ 'a': 1,'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
n=dic.popitem()
print(n,'$',dic)
#out:	('f', 6) $ {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

其实对于一个固定的dic,popitem()每次删除的item是固定的,之所以说‘随机删除’是因为字典本身的无序性

批量删除
使用del(dic[key]),但是没有返回值

dic={ 'a': 1,'b': 2, 'c': 3, 'd': 4}
del(dic['a'],dic['b'])
print(dic)
#out:	{'c': 3, 'd': 4}

全部删除
dic.clear():清空dic内所有的items
del dic 直接删除dic

dic={ 'a': 1,'b': 2, 'c': 3, 'd': 4}
dic.clear()
print(dic)
#out:	{}
del dic
print(dic)
#out:	NameError: name 'dic' is not defined

OK
现在让我们来回顾一下字典的删除:

  • 通过key删除单个元素,dic.pop(key,returnvalue)。会记录返回值,不能省略参数key,如果key不存在时会返回returnvalue。
  • 随机删除一个item:dic.popitem()。
  • 批量删除:del (dic[key1],dic[key2])
  • 清除:dic.clear() 。del dic
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个话题很适合进行 Python 计算思维的训练。 首先我们来了解一下字典和字符串的基本概念。 字典是一种可变容器模型,可以存储任意类型的对象。字典中的每个元素都是由一个键和一个组成的键对,键和之间用冒号分隔。字典用大括号 {} 来表示,例如: ```python my_dict = {'apple': 1, 'banana': 2, 'orange': 3} ``` 其中,'apple'、'banana' 和 'orange' 是键,1、2 和 3 是。 字符串是 Python 中的一种基本数据类型,表示一串字符序列。字符串用单引号或双引号来表示,例如: ```python my_string = 'hello world' ``` 字符串可以进行各种操作,例如拼接、切片、替换等。 接下来,我们来看一些常见的字典和字符串操作。 1. 字典操作 (1)访问字典元素 可以使用方括号 [] 来访问字典中的元素,例如: ```python my_dict = {'apple': 1, 'banana': 2, 'orange': 3} print(my_dict['apple']) # 输出 1 ``` (2)添加和修改字典元素 可以使用方括号 [] 来添加或修改字典中的元素,例如: ```python my_dict = {'apple': 1, 'banana': 2, 'orange': 3} my_dict['peach'] = 4 # 添加元素 my_dict['apple'] = 5 # 修改元素 print(my_dict) # 输出 {'apple': 5, 'banana': 2, 'orange': 3, 'peach': 4} ``` (3)删除字典元素 可以使用 del 关键字来删除字典中的元素,例如: ```python my_dict = {'apple': 1, 'banana': 2, 'orange': 3} del my_dict['banana'] # 删除元素 print(my_dict) # 输出 {'apple': 1, 'orange': 3} ``` 2. 字符串操作 (1)字符串拼接 可以使用加号 + 来拼接字符串,例如: ```python my_string1 = 'hello' my_string2 = 'world' print(my_string1 + ' ' + my_string2) # 输出 'hello world' ``` (2)字符串切片 可以使用方括号 [] 来进行字符串切片,例如: ```python my_string = 'hello world' print(my_string[0:5]) # 输出 'hello' print(my_string[6:]) # 输出 'world' ``` (3)字符串替换 可以使用 replace() 方法来进行字符串替换,例如: ```python my_string = 'hello world' new_string = my_string.replace('world', 'python') print(new_string) # 输出 'hello python' ``` 以上就是字典和字符串的基本操作,希望对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值