介绍
您已经熟悉字典,但是就像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_names
list的行为与其他任何行为一样,并且可以完全相同地循环。
最后一种方法与之前的方法相同,但是该方法不是获取键,而是获取值。到现在为止它应该已经很明显了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内置的用于此类事情的功能。不幸的是,它不适用于多维列表,因为它要求多维列表中的每个列表都具有相同的大小。使用字典,您会知道将始终要使用值对,但是多维列表可以包含任意大小的列表。这就是为什么在使用字典时,这实际上只是一个很好的解决方案。
结论
通过使用方法和迭代,可以将字典分解为更易于使用的形式。通过将字典的功能与列表和元组可用的功能相结合,您将获得处理数据的强大工具。