2012-01-27 106 views
0

可能重复:
In what case would I use a tuple as a dictionary key?用法作为字典键

一个元组的优点在于,它们可被用作在相对列表字典键,因为元组是不可变和列表是可变的。

我还没有看到一个有用和真实的例子,其中元组被用作字典键。你能用智能元组作为字典键来展示一个或几个有用的例子吗?

编辑: 在许多情况下,生成的数据结构可以实现为一个类,而不是字典与键作为元组。解释为什么在你的例子中使用字典而不是类更好。

回答

1

我想你可以使用一个元组到棋盘定义单元:

cell_1 = (1, 3) 
cell_2 = (2, 5) 
occupied_cells = {cell_1: True, cell_2: False} 

def cell_is_occupied(cell): 
    return occupied_cells.get(cell, False) 
3

例如,你需要一个字典员工, 在现实世界中,2名(姓氏和名字可以相同)(即2人同名),但与电话号码组合的姓名(第一名和最后一位)不能相同。 在这种情况下,元组作为密钥是必需的。

3

你有特性的一组中的2D/3D空间中的点:

shape = {(2,3,4) : {'visible' : False, 'color': 'red'}, 
     (1,0,2) : {'visible' : True, 'color': 'blue'}, 
     (1,2,4) : {'visible' : True, 'color': 'green'}} 

,或者您有例如自定义dictbased关系数据库基于两行的主键 :

bill_db = {('customer_a', 'date') : bill_properties, 
      ... }