详解python字典和结构化数据

5.1 字典数据类型

字典的索引可以使用许多不同类型的数据,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键—值”对,在代码中,字典输入时带花括号{}。

字典中的表项是不排序的,所以字典不能像列表那样切片。

5.1.1 keys()、values()和items()方法

key()、values()和items()方法将返回类似于列表的值,分别对应于字典的键、值和键-值对。这些方法返回的值不是真正的列表,他们不能被修改,没有append()方法。但这些数据类型可以用于for循环。

>>> spam = {'color':'red','age':42}
>>> for i in spam.values():
print (i)

red
42

可以通过list()方法将字典转换为列表

>>> list(spam.keys())
['color''age']
>>> list(spam.values())
['red', 42]
>>> spam
{'color''red''age': 42}

5.1.2 get()方法setdefault()方法

get()方法有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值

setdefault()方法提供了一种方式,传递给该方法的第一个参数,是要检查的键,第二个参数,是如果该键不存在时要设置的值。如果该键存在就返回键值。

如果程序中导入了pprint()模块,就可以使用pprint()和pformat()打印字典。

import pprint
message = 'It was a bright cold day in April, and the clocks were striking thirteen.'
count = {}

for character in message:
   count.setdefault(character, 0)
   count[character] = count[character] + 1

print(pprint.pformat(count))
#pprint.pprint(count)  print(pprint.pformat(count))这两种表达式等价

运行结果:

{' ': 13,
',': 1,
'.': 1,
'A': 1,
'I': 1,
'a': 4,
'b': 1,
'c': 3,
'd': 3,
'e': 5,
'g': 2,
'h': 3,
'i': 6,
'k': 2,
'l': 3,
'n': 4,
'o': 2,
'p': 1,
'r': 5,
's': 3,
't': 6,
'w': 2,
'y': 1}

5.2 实践项目

  1. 好玩游戏的物品清单

你在创建一个好玩的视频游戏。用于对玩家物品清单建模的数据结构是一个字典。其中键是字符串,描述清单中的物品,值是一个整型值,说明玩家有多少该物品。例如,字典值{‘rope’: 1, ‘torch’: 6, ‘gold coin’: 42, ‘dagger’: 1,’arrow’: 12}意味着玩家有 1 条绳索、6 个火把、42 枚金币等。 写一个名为displayInventory()的函数,它接受任何可能的物品清单,并显示如下:

Inventory:
1 rop
6 torch
42 gold coin
1 dagger
12 arrow
Total number of items :  62

代码如下:

def displayInventory(dic):
   print('Inventory:')
   count = 0
   for k, v in dic.items():
       print(str(v) + ' ' + k)
       count = v+count
   print('Total number of items : ', count)


dicValue = {'rop': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12}
displayInventory(dicValue)
  1. 假设征服一条龙的战利品表示为这样的字符串列表:
dragonLoot = ['gold coin''digger''gold coin''gold coin''ruby']

写一个名为 addToInventory(inventory, addedItems)的函数,其中 inventory 参数 是一个字典,表示玩家的物品清单(像前面项目一样),addedItems 参数是一个列表, 就像 dragonLoot。 addToInventory()函数应该返回一个字典,表示更新过的物品清单。

def displayInventory(dic):
   print('Inventory:')
   count = 0
   for k, v in dic.items():
       print(str(v) + ' ' + k)
       count = v+count
   print('Total number of items : ', count)


def addToInventory(inventory, addeditems):
   for i in addeditems:
       if i in inventory.keys():
           inventory[i] += 1
       else:
           inventory.setdefault(i, 1)            
   return inventory


inv = {'gold coin':42, 'rope':1}
dragonLoot = ['gold coin''digger''gold coin''gold coin''ruby']
inv = addToInventory(inv,dragonLoot)
displayInventory(inv)

前面的程序(加上前一个项目中的 displayInventory()函数)将输出如下:

Inventory:
45 gold coin
1 rope
1 digger
1 ruby
Total number of items :  48

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/4392.html

(0)
晴川运维晴川运维
上一篇 2025年6月8日
下一篇 2025年6月8日

相关推荐

  • 详解Linux Base64

    Base64编码在电子邮件中很常见,Foxmail、Outlook等邮件用户代理发邮件时进行SMTP验证,就是输入base64编码格式的用户名和密码进行验证的,而邮件的主体内容和附…

    Linux系统 2025年9月21日
  • Linux中设置全局变量

    Linux 中环境变量,包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量;用户级的环境变量则是该用户使用系统时加载的环境变量,下面为大家详细讲解一下Li…

    Linux系统 2025年6月8日
  • Linux fg命令:把后台命令恢复在前台执行

    前面所讲,都是将工作丢到后台去运行,那么,有没有可以将后台工作拿到前台来执行的办法呢?答案是肯定的,使用  fg 命令即可。 fg 命令用于把后台工作恢复到前台执行,该命…

    Linux系统 2025年6月8日
  • CentOS7中安装Weblogic具体步骤

    WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE架构的中间件,BEA WebLogic是用于开发、集成、部署和管理…

    Linux系统 2025年6月8日
  • 详解TCP长连接和短连接

    HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如…

    Linux系统 2025年6月8日
  • 详解shell if 判断

    UNIX Shell 里面比较字符写法 -eq 等于; -ne 不等于; -gt 大于; -lt 小于 ; -le 小于等于; -ge 大于等于; -z 空串; -n 非空串; =…

    Linux系统 2025年7月9日
  • static关键字的使用方法

    static,即静态声明。它在 作用域、存储方式、生命周期 等各方面影响一个变量或函数。文章将从 局部变量、全局变量、普通函数、类的static成员(包括数据成员与成员函数)来总结…

    Linux系统 2025年10月9日
  • Linux下安装与配置APF防火墙

    APF是一款Linux下的iptables防火墙,由R-fx Networks开发维护,实现代码基本为SHELL。个人觉得这是Linux下最易用,且强大的防火墙脚本。类似级别的还有…

    Linux系统 2025年9月19日
  • SVN版本回退

    SVN是一款版本控制工具。相对于GitHub而言,SVN在使用上更为简化些,本篇文章重点为大家讲解一下SVN版本回退。 当我们想放弃对文件的修改,可以使用 SVN revert 命…

    Linux系统 2025年6月21日
  • Kali Linux安装 SSH 服务具体步骤

    SSH是一种网络协议,用于计算机之间的加密登录。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信…

    Linux系统 2025年9月24日

发表回复

登录后才能评论