2 回答

TA貢獻1796條經驗 獲得超4個贊
Python 沒有提供通過文字或顯示* 來引用正在構造的對象的方法。您可以(ab)使用Python 3.8或更高版本中的賦值表達式來模擬這一點:
a_dictionary = {
"key_1": (x := "value_1"),
"key_2": (y := "value_2"),
"key_3": x + "_" + y
}
它需要提前進行一些規劃,因為您不是直接引用鍵值,而是引用預定義的變量。請注意,在分配給 后,x和仍保留在范圍內,因此這只是一個有問題的等價物ya_dictionary
x = "value_1"
y = "value_2"
a_dictionary = {
"key_1": x,
"key_2": y,
"key_3": x + "_" + y
}
自定義類確實更合適:
class Thing:
def __init__(self, v1, v2):
self.key_1 = v1
self.key_2 = v2
self.key_3 = v1 + "_" + v2
a_thing = Thing("value_1", "value_2")
顯示是類似于文字的構造,但可以包含非文字引用。例如,列表顯示包括[1, x, y]和[int(x) for x in foo]。

TA貢獻1829條經驗 獲得超7個贊
經過一番挖掘,并且僅針對字典的情況,我發現了其他解決方法,基于當我需要自引用字典時我該怎么做?:
class MyDict(dict):
? ? def __getitem__(self, item):
? ? ? ? return dict.__getitem__(self, item).format(self)
a_dictionary = MyDict({
? ? "key_1": "value_1",
? ? "key_2": "value_2",
? ? "key_3": "{0[key_1]}" + "_" + "{0[key_2]}" # == "value_1_value_2"
})
- 2 回答
- 0 關注
- 201 瀏覽
添加回答
舉報