Skip to main content
 首页 » 编程设计

python之访问字典 Python 中元组中的元素

2025年05月04日10yyy_WW

我正在编写一个代码来识别给定数字的后缀。我有一堆 if 语句来找出子修复。但是我认为更优雅的解决方案是字典。所以我有以下字典:

问题是,如果我在 subfix 中写入 9,结果为 False。如何访问字典中元组中的元素?

 subfix = {(0, 4, 5, 6, 7, 8, 9, 11, 12, 13): 'th', 1: 'st', 2: 'nd', 3: 'rd'} 

例如,我想写一些简单的东西:

def subf(a): 
     if a in subfix: 
           ending = subfix.get(a) 
     print('We met on the ',a,ending,'.'sep='') 

这将打印“我们在 1 号相遇。” (但不适用于 0、4、5、6、7、8、9、11、12、13)我如何让它适用于这些元素?

请您参考如下方法:

您需要知道您正在使用的操作实际上是做什么的。 something in some_dictionary 并不是您当时恰好想要的任意定义的“in”测试概念。它测试 something 是否是 some_dictionary 的键。 9 不是 subfix 的键,因此 subfix 中的 9 正确返回 错误。

退一步想想subfix有什么作用?它是做什么用的?在这样的定义中:

subfix = {1: 'st', 2: 'nd', 3: 'rd'} 

我会说 subfix 表示从数字到用于每个数字的序数版本的后缀的映射。 OTOH 这个定义:

subfix = {(0, 4, 5, 6, 7, 8, 9, 11, 12, 13): 'th', 1: 'st', 2: 'nd', 3: 'rd'} 

表示类似于“从共享公共(public)序数后缀或单个数字的数字元组到它们的序数后缀的映射”。这个定义所代表的内容要复杂得多,因此使用起来也复杂得多。如果你有一个任意数,你想找到它的序数后缀,你需要找出它是否是字典中的一个键,或者它是否是字典中任何一个键的元素。这意味着字典不允许您直接从数字跳到序数后缀,也不允许您快速检查映射中是否有任何数字。所以我认为在这种情况下使用错误的数据结构;从数字到后缀的直接映射会更容易使用。