class Players:
def __init__(self, username, score):
self.username = username
self.score = score
如果我創建一個類和它的一些具有不同分數的實體,我怎樣才能得到一個字典,其中用戶名作為鍵,分數作為所有實體的值?我會在創建實體后更改分數,因此在創建實體時將分數和用戶名附加到字典中是行不通的。
太感謝了
uj5u.com熱心網友回復:
一個棘手的方法是使用attrgetterfromoperator
from operator import attrgetter
p1 = Players('p1', 10)
p2 = Players('p2', 11)
p3 = Players('p3', 12)
instances = [p1, p2, p3]
d = dict(map(attrgetter('username', 'score'), instances))
print(d)
# {'p1': 10, 'p2': 11, 'p3': 12}
或沒有任何額外的進口
d = dict((obj.username, obj.score) for obj in instances)
uj5u.com熱心網友回復:
作為最簡單的方法,您可以這樣做
player_instance = Player("name", 0)
...
player_instance.__dict__
該字典也鏈接到物件,因此對字典的更改將更改實體
player_instance.__dict__["score"] = 123456789
# player_instance.score is now 123456789
不過,您不一定想讓您的物件通過這本字典接受更改。通常,您通常會做一個為您生成所需資料結構的方法
class Players:
def __init__(self, username, score):
self.username = username
self.score = score
@property
def as_dict(self):
return {"username": self.username, "score": self.score}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475775.html
下一篇:將字典串列與特定值匹配組合
