当前位置: 首页>>技术教程>>正文


Python高级字典

, , ,

介绍

您已经熟悉字典,但是就像Python支持的其他数据结构一样,字典也有使用它们的方法和更强大的方法。使用字典的方法不如使用列表的方法多,但这是因为字典根本不需要它们。另外,许多确实存在的方法可以将字典分解为列表和元组,以使它们更易于管理。因此,这些列表方法可以与字典方法结合使用,以创建用于处理数据的高效计算机。

字典方法

项,键和值

这些方法可以将字典分解为其他数据结构,以使它们的管理更加容易。这样做还可以访问那些数据结构的方法。通过方法和循环的这些组合,您可以轻松访问和操作数据。

第一种方法是items()。它将字典中的每个条目分解为一个元组,并将它们全部存储在列表中。


distro_install_command = {'Debian': 'apt-get',
                        'Ubuntu': 'apt-get',
                        'Fedora': 'dnf',
                        'CentOS': 'yum',
                        'OpenSUSE': 'zypper',
                        'Arch': 'pacman',
                        'Gentoo': 'emerge'
}
distro_install_list = distro_install_command.items()
print(distro_install_list)
print(distro_install_list[3][1])

一切都按照您期望的方式分解。

下一个方法使您可以以列表的形式访问字典中的键。


distro_install_command = {'Debian': 'apt-get',
                        'Ubuntu': 'apt-get',
                        'Fedora': 'dnf',
                        'CentOS': 'yum',
                        'OpenSUSE': 'zypper',
                        'Arch': 'pacman',
                        'Gentoo': 'emerge'
}
distro_names = distro_install_command.keys()

for distro in distro_names:
	print(distro)

新的distro_nameslist的行为与其他任何行为一样,并且可以完全相同地循环。

最后一种方法与之前的方法相同,但是该方法不是获取键,而是获取值。到现在为止它应该已经很明显了values()


distro_install_command = {'Debian': 'apt-get',
                        'Ubuntu': 'apt-get',
                        'Fedora': 'dnf',
                        'CentOS': 'yum',
                        'OpenSUSE': 'zypper',
                        'Arch': 'pacman',
                        'Gentoo': 'emerge'
}
distro_commands = distro_install_command.values()

for command in distro_commands:
    print(command)

字符串中的字典值

这不是一种方法,也不是什么太复杂的方法,但是当您想直接从哈希将值插入字符串中时,就会出现这种情况,并且效果不尽如人意。的%运算符实际上将整个字典视为一个整体,并从其中的键中提取值以将其替换为字符串。


book_info = { 'title': 'Learning Python',
			'pages': 342,
			'pub_date': 'November 2016',
			'chapters': 14,
}
print("The book is called %(title)s, and it was released on %(pub_date)s.  It is %(pages)d pages long with %(chapters)d chapters." % book_info)

如您所见,这只是处理从字典中插入值的一种更方便的方法。即使只有很少的条目,使用常规方法也会变得非常重复和麻烦。

遍历字典

遍历字典并不像您想的那么简单。由于字典使用成对的值进行操作,因此基于数字的列表循环方法不太有效。试一试,看看会发生什么。


distro_install_command = {'Debian': 'apt-get',
                        'Ubuntu': 'apt-get',
                        'Fedora': 'dnf',
                        'CentOS': 'yum',
                        'OpenSUSE': 'zypper',
                        'Arch': 'pacman',
                        'Gentoo': 'emerge'
}
for distro in distro_install_command:
	print(distro)

所以发生了什么事?有点奏效,但唯一输出的是键。您可能也猜出了一种获取值的方法,它可以工作,但是解决方案并不是那么完美。


distro_install_command = {'Debian': 'apt-get',
                        'Ubuntu': 'apt-get',
                        'Fedora': 'dnf',
                        'CentOS': 'yum',
                        'OpenSUSE': 'zypper',
                        'Arch': 'pacman',
                        'Gentoo': 'emerge'
}
for distro in distro_install_command:
    print("The distro is %s, and it uses the command %s." % (distro, distro_install_command[distro]))

有一种更好的方法可以解决这个问题,它利用了items()方法。如果您记得以前,items()方法创建一个元组列表,其中包含字典中的键和值。


distro_install_command = {'Debian': 'apt-get',
                        'Ubuntu': 'apt-get',
                        'Fedora': 'dnf',
                        'CentOS': 'yum',
                        'OpenSUSE': 'zypper',
                        'Arch': 'pacman',
                        'Gentoo': 'emerge'
}
for distro, command in distro_install_command.items():
    print("The distro is %s, and it uses the command %s." % (distro, command))

面对您以前学到的东西,这似乎是对的,不是吗? for循环如何创建两个临时变量来访问二维列表中的元素?好吧,这实际上是Python内置的用于此类事情的功能。不幸的是,它不适用于多维列表,因为它要求多维列表中的每个列表都具有相同的大小。使用字典,您会知道将始终要使用值对,但是多维列表可以包含任意大小的列表。这就是为什么在使用字典时,这实际上只是一个很好的解决方案。

结论

通过使用方法和迭代,可以将字典分解为更易于使用的形式。通过将字典的功能与列表和元组可用的功能相结合,您将获得处理数据的强大工具。

目录

  1. Python简介和安装指南
  2. Python文件和解释器
  3. 在Python中试验数字和文本
  4. Python变量
  5. 在Python中使用数字变量
  6. Python字符串基础
  7. 高级Python字符串
  8. Python注释
  9. Python列表
  10. Python列表方法
  11. Python多维列表
  12. Python元组
  13. Python布尔运算符
  14. Python If语句
  15. Python While循环
  16. Python For循环
  17. Python字典
  18. Python高级字典
  19. Python函数

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7766.html,未经允许,请勿转载。