2012-01-27 3 views
0

Можно создать дубликат:
In what case would I use a tuple as a dictionary key?Использование кортежей в качестве ключей словаря

Одним из преимуществ кортежей является то, что они могут быть использованы в качестве словаря ключей в противоположном к спискам, а кортежи неизменяемы и списки изменяемы.

Я не видел полезного и реального примера, где кортежи используются в качестве словарных ключей. Не могли бы вы показать один или несколько полезных примеров с умным использованием кортежей в качестве словарных ключей?

EDIT: Во многих случаях результирующая структура данных может быть реализована как класс, а не как словарь с ключами как кортежи. Объясните, почему в вашем примере лучше использовать словарь вместо класса.

ответ

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, 
      ... } 
Смежные вопросы