Trong trường hợp bạn thực sự có nghĩa là những gì bạn dường như để hỏi, tôi sẽ cung cấp này câu trả lời thay thế.
Bạn nói rằng bạn muốn dict để trở một giá trị nhất định, bạn không nói rằng bạn muốn thiết rằng đánh giá cao cùng một lúc, như defaultdict
làm. Điều này sẽ làm như vậy:
class DictWithDefault(dict):
def __init__(self, default, **kwargs):
self.default = default
super(DictWithDefault, self).__init__(**kwargs)
def __getitem__(self, key):
if key in self:
return super(DictWithDefault, self).__getitem__(key)
return self.default
Sử dụng như thế này:
d = DictWIthDefault(99, x=5, y=3)
print d["x"] # 5
print d[42] # 99
42 in d # False
d[42] = 3
42 in d # True
Ngoài ra, bạn có thể sử dụng một tiêu chuẩn dict
như thế này:
d = {3: 9, 4: 2}
default = 99
print d.get(3, default) # 9
print d.get(42, default) # 99
Nguồn
2012-02-04 13:06:37
Tập hợp "tất cả các khóa" này bạn đang nói đến là gì? Có vô số khóa tiềm năng, ngay cả khi bạn hạn chế bản thân, ví dụ: dây. Bạn có thể đưa ra một ví dụ? – delnan
bạn có thể sử dụng phương thức get, 'a.get (k [, x]) a [k] nếu k trong a, else x' – Anycorn
Một số trợ giúp theo hướng nghịch đảo: http://stackoverflow.com/questions/7688453/ how-to-fix-default-values-from-a-dictionary-pythonically – aitchnyu