2

Python 辞書を使用して、実行中のタスクを追跡したいと考えています。これらのタスクにはそれぞれ固有の属性がいくつかあります。そのため、これらの属性の関数を使用して辞書キーを生成し、同じ属性を使用して辞書でそれらを再度検索できるようにしたいと考えています。次のようなもの:

class Task(object):
    def __init__(self, a, b):
        pass

#Init task dictionary
d = {}

#Define some attributes
attrib_a = 1
attrib_b = 10

#Create a task with these attributes
t = Task(attrib_a, attrib_b)

#Store the task in the dictionary, using a function of the attributes as a key
d[[attrib_a, attrib_b]] = t

明らかにこれは機能しません (リストは可変であるため、キーとして使用できません ( "unhashable type: list" ))。いくつかの既知の属性から一意のキーを生成する標準的な方法は何ですか?

4

2 に答える 2

5

リストの代わりにタプルを使用します。タプルは不変であり、辞書のキーとして使用できます。

d[(attrib_a, attrib_b)] = t

括弧は省略できます。

d[attrib_a, attrib_b] = t

ただし、この構文を嫌う人もいるようです。

于 2013-03-07T17:09:41.830 に答える
1

タプルを使う

d[(attrib_a, attrib_b)] = t

それはうまくいくはずです

于 2013-03-07T17:10:28.847 に答える