1、字典

  字典和列表都是可变的数据类型,不同点在于,列表的索引默认是整数,并且不用标识出来,而字典的索引(也叫做键)需要标识出来,且字典要使用大括号括起来,格式如下:

变量名 = { “键”:”值”, “键”:”值”, “键”:”值”}

#例如:

info = {"website_name":"www.nwumba.cn", "ip":"110.42.232.244","age":"1 year"}

#获取某个键的值,需要像列表一样指定索引

print(info[“website_name”]

print(info[“ip”])

print(info[“age”])

# 改变值和列表也是一样的

info[“website_name’] = “nwumba.cn”

print(info)

# 字典的key只能为不可变数据类型,值可以为任意数据类型,下面会报错,key不能为list

info[[“test”]] = “test”

 

2、for循环获取dict的常用函数

keys(): 返回dict的所有key

values(): 返回dict的所有value

items(): 返回dict的所有key和value,每对key和value以元组的形式返回

上面所有的返回值都可以通过list()来转换成列表

 

3、检查key或者value是否在dict中存在

in: 查看key或者value是存在dict的key或者value中

not in : 查看key或者value不存在于dict的key或者value中

 

4、get()

get(key,default_return_value): 如果dict中存在key,则直接返回,否则返回default_return_value指定的值,不使用get的话,直接使用key来获取值会报错。

 

5、setDefault(key,deafult_value)

  setDefault先判断key是否存在于dict中,如果存在,则略过,否则设定map[key]=default_value  

info = {"website_name":"www.nwumba.cn", "ip":"110.42.232.244","age":"1 year"}

# 判断info中是否存在domain_name这个key,如果不存在则设定info['domain_name']='nwumba.cn'

if 'domain_name' not in spam:

    spam['domain_name'] = 'nwumba.cn'



#上面的功能可以简化为一句代码

info = {"website_name":"www.nwumba.cn", "ip":"110.42.232.244","age":"1 year"}

info.setDefault('domain_name','nwumba.cn')

 

6、综合实例

  统计各个大型网站的几个用户拥有的账户总数

#每个用户在各个大型网站上拥有的账户数目

allAccounts = {'xiaomage': {'qq.com': 5, 'nwumba.cn': 12},

             'xiaolige': {'baidu.com': 3, 'nwumba.cn': 2},

             'xiaoming': {'google.com': 3, 'qq.com': 1}}



# accounts: dict,记录每个用户在各个网站的账户数目,等价于allAccounts

# item: 域名,例如:nwumab.cn

def totalAccount(accounts, item):

    numAccounts = 0

  ➊ for k, v in accounts.items():

      ➋ numAccounts += v.get(item, 0)

    return numAccounts



print('在各个网站上的账户总数:')

print(' - qq.com         ' + str(totalAccount(allAccounts, 'qq.com')))

print(' - nwumba.cn           ' + str(totalAccount(allAccounts, 'nwumba.cn')))

print(' - baidu.com          ' + str(totalAccount(allAccounts, 'baidu.com')))

print(' - google.com ' + str(totalAccount(allAccounts, 'google.com')))

原创文章,转载请注明出处:http://www.nwumba.cn/article/13/