Python-字典

Posted wind1004

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-字典相关的知识,希望对你有一定的参考价值。

一、概念

字典用大括号{}表示,键值对格式。优点是取数据方便,速度快。

从string到list到dict,取数据越来越简单。

字典是无序的。

下面是一个字典。这个字典包含了4个键值对。4个key分别为:name、sex、addr、age。每个key都有对应得value。

二、字典操作

1、查

有2种方法可以对字典进行查询。

第一种是get,语法格式为:dict.get(\'key\'),查对应key的值。

此方法的优点是,可以定义假如key不存在,取到的默认值。如果不定义,返回None,不会报错。

第二种语法格式为:dict[\'key\'],也是查询对应key的值,但是如果key不存在会报错。

  

另外,还可以查询字典所有的key,value,k-v。

2、增

增也有2种方法。

第一种,直接dict[\'new_key\']=value。采用这种方法不止可以新增k-v对,还可以修改已有的key对应的value。

 第二种,语法格式为:dict.setdefault(\'new_key\',\'value\')。这种方法如果key存在,不能修改对应的值,也不会报错。

 

3、改

在上一部分已经介绍了如何修改,dict[\'new_key\']=value即可。要把name的值改为小红,直接infos[\'name\']=\'小红\'就可以了。

4、删

(1)dict.pop(\'key\'),删除指定的key。如果key不存在会报错。

(2)dict.popitem(),随机删除一个key,无法指定key

(3)del dict[\'key\'],删除指定key。如果key不存在会报错。

 

 三、取字典中的值

 字典取值也是一层层的取。

 例:

package = {
   \'pack_1\':{
      \'name\':\'小兰\',
      \'phone\':18888888888,
      \'addr\':\'北京\',
      \'sex\':\'女\',
      \'money\':200,
      \'contain\':[\'books\',\'clothes\',\'cup\',\'hat\']
   },
   \'pack_2\':{
      \'weight\':\'1.5kg\',
      \'contact\':[\'phone\',\'email\'],
      \'cities\':  {
            \'china\':[\'北京\',\'上海\',\'深圳\'],
            \'usa\':[\'纽约\',\'洛杉矶\',\'华盛顿\'],
            \'Australia\':[\'悉尼\',\'墨尔本\']
         }
   }
}
# 取pack_2的洛杉矶
print(package[\'pack_2\'][\'cities\'][\'usa\'][1])
#取出pack_2所有的中国城市
print(package[\'pack_2\'][\'cities\'][\'china\'])
#在pack_1中增加\'contain\'元素,增加\'shoes\'
package[\'pack_1\'][\'contain\'].append(\'shoes\')
print(package[\'pack_1\'][\'contain\'])
#money增加100
package[\'pack_1\'][\'money\'] = package[\'pack_1\'][\'money\'] + 100
print(package[\'pack_1\'][\'money\'])

分析:

(1)取‘洛杉矶’时,首先要取到usa这一层  package[\'pack_2\'][\'cities\'][\'usa\'],usa这一层是列表,所以接下来应该按照 list 取元素的方式取。

(2)增加contain中的元素,首先要取到contain这一层,也就是 package[\'pack_1\'][\'contain\'],contain是 list,因此用list增加元素的方法增加\'shoes\'

运行结果为:

四、字典循环

字典循环,循环的是key。将上面的字典循环。

  

如果想k-v都循环,可以用下面的方式:

五、下面做一个字典的小练习

请设计一个注册的小程序,实现以下功能:(1)输入用户名,密码,再次确认密码(2)校验用户名是否已经注册,已经注册的不允许再次注册;(3)校验两次输入密码是否一致,不一致给出提示;(4)最多输入错误3次;(5)注册成功后,将新的用户添加进去。

users = {
    \'mary\':\'123456\',
    \'lily\':\'456789\'
}
for i in range(3):
    username = input(\'账号:\').strip()
    passwd = input(\'密码:\').strip()
    cpasswd = input(\'密码确认:\').strip()
    if username==\'\' or passwd==\'\' or cpasswd==\'\':
        print(\'用户名/密码不能为空\')
    elif username in users:
        print(\'用户名已经被注册\')
    elif passwd!=cpasswd:
        print(\'两次输入的密码不一致\')
    else:
        print(\'恭喜,注册成功!\')
        users[username]=passwd
        break
else:
    print(\'错误次数过多\')
print(users)

六、字典排序

字典是无序的,所以不能直接对字典进行排序。

d.items(),是取字典的key和value,结果是一个二维数组

对字典的排序方法如下:

 

以上是关于Python-字典的主要内容,如果未能解决你的问题,请参考以下文章

Python snippet(代码片段)

Python代码阅读(第26篇):将列表映射成字典

Python代码阅读(第40篇):通过两个列表生成字典

Python代码阅读(第38篇):根据谓词函数和属性字符串构造判断函数

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段