我試圖將下面的元組tuple轉化為dict(而且是一個反轉的dict):
我試圖將下面的元組tuple轉化為dict(而且是一個反轉的dict)。
EDIT_TUTORING_PLACES_CHOICES_TRANSLATOR = (
(AT_STUDENT, ['1']) 。
(AT_TUTOR, ['2'])。
(ONLINE, ['3'])。
(AT_STUDENT_AND_TUTOR, ['1', '2'])。
(AT_STUDENT_AND_ONLINE, ['1', '3']) 。
(AT_TUTOR_AND_ONLINE, ['2', '3']) 。
(ALL, ['1'/span>, '2'/span>, '3'/span>])。
)
這是我使用的代碼:
這是我使用的代碼。
dict = {v: k for k, v in list(EDIT_TUTORING_PLACES_CHOICES_TRANSLATOR)}。
我收到了以下錯誤:
我收到了以下錯誤。
TypeError: unhashable type: 'list'
我應該怎么做?非常感謝!
uj5u.com熱心網友回復:
這個dict將有一個串列作為鍵,這是不可能的。 我用嵌套的if/else陳述句解決了這個問題:
def tutor_place_array_to_int(arr。list[str])。)
if arr.count('1') > 0:
if arr.count('2'/span>) > 0:
if arr.count('3') > 0:
return ALL
else:
return AT_STUDENT_AND_TUTOR
else:
if arr.count('3') > 0:
return AT_STUDENT_AND_ONLINE
else:
return AT_STUDENT
else:
if arr.count('2') > 0:
if arr.count('3'/span>) > 0:
return AT_TUTOR_AND_ONLINE
else:
return AT_TUTOR
else:
if arr.count('3') > 0:
return ONLINE
return None: return ONLINE
ALL、AT_STUDENT_AND_TUTO等都是代表整數的常數
uj5u.com熱心網友回復:你是對的,串列不能作為python dict中的鍵,因為鍵必須是不可變的。 然而,你可以通過使用圖元而不是串列來實作你的目標(因為圖元是不可變的)。 使用
來創建你的dicttutor_place_array_to_int_map = {tuple(v): k for k, v in list(EDIT_TUTORING_PLACES_CHOICES_TRANSLATOR) }
這樣,你在dict中的鍵是不可變的元組,然后你就可以使用:
這樣,你的鍵是不可變的元組。
sth = tutor_place_array_to_int_map[("1"/span>, "2"/span>)
sth = tutor_place_array_to_int_map.get(("1"/span>, "2"/span>)
sth = tutor_place_array_to_int_map.get(tuple(["1", "2"] )
等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/324440.html
標籤:
