如何通过索引访问字典中的键

374 阅读4分钟

给这个帖子评分

问题的提出和解决方案概述

在这篇文章中,你将学习如何在Python中通过索引访问一个字典的键。

为了使它更有趣,我们有以下的运行场景。

Rivers服装公司有一个雇员的名单。他们想找到他们最年轻的员工的名字。他们知道这个人是19岁。列表是Dictionary格式的,你被要求检索相关的名字。

💬 问题是。我们如何写Python代码来通过索引访问一个字典的键?

我们可以通过下面的一个方案来完成这个任务。


方法 1: 使用字典和列表

这个方法中的这两个选项将*Dictionary*转换成List格式来提取键。然后根据上面的情况访问适当的键。

staff = {'Amy': 23, 'Ben': 32, 'Micah': 37, 'Jon': 19,  'Karn': 39}
names = list(staff)
print(names[3])

这段代码声明了一个包含五(5)个键:值对的*字典*,并将它们保存到staff

上面的选项1staff 转换为List格式,提取键并保存到names 。适当的键([3])的内容被输出到终端。

或者

staff = {'Amy': 23, 'Ben': 32, 'Micah': 37, 'Jon': 19,  'Karn': 39}
print(list(staff)[3])

上面的选项2staff 中提取键并将它们转换成List格式,引用适当的键([3])并将输出发送到终端。

💡**注意:**两个选项产生相同的结果。然而。 选项2 更加紧凑。

输出


方法2:使用List和dict.items()

这个例子将Dictionary转换为List格式,然后提取key:value对并以Tuples的List格式返回。

staff = {'Amy': 23, 'Ben': 32, 'Micah': 37, 'Jon': 19,  'Karn': 39}
names = list(staff.items())
print(names[3][0])

这段代码声明了一个包含五(5)个键:值对的字典,并将它们保存到staff[staff.items()](https://blog.finxter.com/python-dict-items-method/)被调用来提取这些对作为一个图元的列表

如果我们将print(names) 输出到终端,就会显示以下的图元列表。

[('Amy', 23), ('Ben', 32), ('Micah', 37), ('Jon', 19), ('Karn', 39)]

如果我们向终端输出(print(names[3])),就会显示List中被引用的Tuple

('Jon', 19)

然后,为了检索这个元组的第一个元素,[0] 被附加到names (print(names[3][0]))。最后,这个结果被输出到终端。

输出

Jon

方法3:使用List Comprehension和dict.items()

这个例子使用List Comprehensiondict.items()来寻找并返回基于一个值的适当的键。

staff = {'Amy': 23, 'Ben': 32, 'Micah': 37, 'Jon': 19,  'Karn': 39}
name = [k for k, v in staff.items() if v == 19]
print(name)

这段代码声明了一个包含五(5)个键:值对的字典,并将它们保存到staff列表理解法dict.items()搜索并返回其相关值等于19的适当的键。

结果输出到终端。

输出

['Jon']

为了去除周围的括号和引号,在List Comprehension语句的末尾加上[0] ,以产生所需的结果。

staff = {'Amy': 23, 'Ben': 32, 'Micah': 37, 'Jon': 19,  'Karn': 39}
name = [k for k, v in staff.items() if v == 19][0]
print(name)

输出结果


方法4:使用字典理解和dict.items()

这个例子使用Dictionary Comprehensiondict.items()来寻找并返回基于一个值的适当的键。

staff = {'Amy': 23, 'Ben': 32, 'Micah': 37, 'Jon': 19,  'Karn': 39}
name  = {k for k, v in staff.items() if v == 19}
print(list(name)[0])

这段代码声明了一个包含五(5)个键:值对的字典,并将它们保存到staff词典的理解力dict.items()搜索并返回其相关值等于19的适当的键。

其结果输出到终端。

如上图所示,如果在打印语句中,[0] 没有附加到name ,(print(list(name)))就会显示以下输出。

输出结果

['Jon']

要删除周围的括号和引号,请将[0] 附加到打印语句(print(list(name)[0]))中,以产生所需的结果。

乔恩

总结

这五(4)种通过索引访问字典键的方法应该给你足够的信息来选择最适合你编码要求的方法。

祝您好运,编码愉快!