python中字典dict的详细讲解

字典一直都是算法中很常用的,对于计算速度以及算法优化都具有很好的效果,虽然用的多,但是关于字典的一些知识,我还是记录下来,共自己还有大家一起学习。

1、什么是字典?

可以理解为字典是一个可变容器模型,可以存放任意类型对象,如字符串,列表,元组等
字典由key(键)和value(值)组成,形如{key:value}

2、创建字典

字典的创建有两种方式,第一种就是使用{},另一种就是使用内嵌函数dict(),比如

>>> info = {}
>>> type(info)
<class 'dict'>

>>> info = dict()
>>> type(info)
<class 'dict'>

两种格式的类型都是字典,下面用上面两种方式来创建字典。

>>> info = {'name':'sky'}
>>> info
{'name': 'sky'}
>>> info = dict(name='sky')
>>> info
{'name': 'sky'}

两种方式中第二种更加的优雅,更加规范,但是对于一种特殊情况,第二种方法就不适合了,比如

>>> key = 'name'
>>> info = {key:'sk'}
>>> info
{'name': 'sk'}
>>> info = dict(key='sk')
>>> info
{'key': 'sk'}

对于这种情况,就会出现一个错误。除了上面的两种初始化方法,字典的fromkeys()方法也可以实现初始化字典。
注:fromkeys方法可以从 列表 中获取元素作为 并用None或fromkeys方法的第二个参数初始化,例如

>>> info = {}.fromkeys(['name','age'])
>>> info
{'name': None, 'age': None}
>>> info = dict().fromkeys(['name','age'])
>>> info
{'name': None, 'age': None}

上面是对于fromkeys()没有传入第二个参数,最后返回的是None,但是我们传入参数时,就有

>>> info = {}.fromkeys(['name','age'],'sk')
>>> info
{'name': 'sk', 'age': 'sk'}
>>> info = {}.fromkeys(['name','age'],'sk')
>>> info
{'name': 'sk', 'age': 'sk'}

这种方法更适合用于对同一属性进行赋值,比如性别男用1代表,性别女用0代表,然后对全班的学生性别进行赋值,就可以用到这种方法。

3、获取键值(优雅的)

>>> info = {'name':'sk','age':'25'}
>>> info['name']
'sk'
>>> info['age']
'25'
>>> info['hh']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'hh'

从上面可以发现,当key存在的时候,可以正常返回我们value,但是当key不存在时,就返回个KeyError;字典中有个内嵌函数get(),当key不存在时,返回None,比如

>>> info = {'name':'sk','age':'25'}
>>> info.get('name')
'sk'
>>> info.get('age')
'25'
>>> print(info.get('hh'))
None
>>> info.get('hh','xx')
'xx'

从上面的程序中可以发现当key不存在时,get()会返回第二个参数的值,没有则返回None

4、更新或添加值

设置一个空字典info = dict(),下面将数据添加进空字典里

>>> info = dict()
>>> info['name'] = 'sk'
>>> info['age'] = '25'
>>> info
{'name': 'sk', 'age': '25'}

除了上面的添加方式以外,update亦可以实现更新或添加数据。

>>> info
{'name': 'sk', 'age': '25'}
>>> info
{'name': 'sk', 'age': '25'}
>>> info.update({'name':'sl','age':'28'})
>>> info
{'name': 'sl', 'age': '28'}

使用了update方法将原来的字典进行了更新,从这里是不是可以很直观的看出字典的key的关键性,可以随意key对应的value进行更新,但是不能改变key值,也可以添加新的key及其value,而且这种方式更规范,更正式。

5、字典删除

字典删除的方式有两种,一种是del方法,一种是pop()函数方法

5.1 del

>>> info
{'hh': 'xx', 'name': 'sk', 'age': 25}
>>> del info['hh']
>>> info
{'name': 'sk', 'age': 25}

这样就将{‘hh’:‘xx’}这一键值对删除了,下面看看pop的方法

5.2 pop()函数

>>> info
{'hh': 'xx', 'name': 'sk', 'age': '25'}
>>> info.pop('hh')
'xx'
>>> info
{'name': 'sk', 'age': '25'}

从上面的程序中可以看出,pop是将一个键值取出来,然后删除,而del是直接删除。

6、常见操作

对于一个字典,我们经常做的就是去除字典所有的keys,以及所对应的value。这里常用的两个函数有keys以及items()

>>> info
{'name': 'sk', 'age': '25'}
>>> info.keys()
>>> for i,j in info.items():
...     print(i,":",j)
...
name : sk
age : 25

第六部分是在项目中经常用到的一种字典方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Python,可以使用不同的方法来对齐字典的循环输出。其一种常用的方法是使用字符串的格式化功能来实现对齐。可以使用百分号(%)、format()函数、f-strings以及expandtabs()函数来实现。另外,还可以使用just()函数来进行对齐。具体方法如下: 1. 使用百分号(%)格式化字符串,并使用"\t"进行列对齐: ``` for key in my_dict: print("%s:\t%s" % (key, my_dict[key])) ``` 2. 使用format()函数进行列对齐: ``` for key in my_dict: print("{0}:\t{1}".format(key, my_dict[key])) ``` 3. 使用f-strings进行列对齐: ``` for key in my_dict: print(f"{key}:\t{my_dict[key]}") ``` 4. 使用expandtabs()函数进行列对齐: ``` for key in my_dict: print("{0}:\t{1}".expandtabs(8).format(key, my_dict[key])) ``` 总结起来,以上方法都可以实现字典的循环输出对齐,具体使用哪种方法取决于个人的偏好和需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python for循环](https://blog.csdn.net/weixin_39960920/article/details/116169013)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [在 Python 使用列对齐打印](https://blog.csdn.net/fengqianlang/article/details/130337811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python字典_集合_选择循环结构](https://blog.csdn.net/sshi9/article/details/122584425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值