üzerine yazarsa?kaldırın hatası bir Python dict anlama bir tuşa geçersiz olsaydı istisna yükseltmek dict anlama almanın bir yolu var mı kilit
>>> {k:v for k, v in ('a1', 'a2', 'b3')}
{'a': '2', 'b': '3'}
Ben for
döngü ile yapılabilir bunun farkına:
Örneğin, ben anahtar 'a'
için iki değer vardır çünkü hata aşağıdaki istiyoruz. Anlama sözdizimini korurken bunu yapmanın bir yolu var mı?
class DuplicateKeyError(ValueError): pass
def dict_no_dupl(it):
d = {}
for k, v in it:
if k in d: raise DuplicateKeyError(k)
d[k] = v
return d
dict_no_dupl((k, v) for k, v in ('a1', 'a2', 'b3'))
Bu yardımcı işlev eklemek, ama sağlam anlama sözdizimi (makul) tutar:
Değil ek kod olmadan. Örneğin, beklenen uzunluk için açık bir şekilde test edebilirsiniz. Sözlük kavrama sözdizimi, normal bir sözlük gibi davranır, anahtar/değer çiftlerini tek tek veya “anahtar” değer çiftleri ile sıraya dizilebilen “dict (”): son anahtar kazanır. –
Her bir anahtarın daha önce görülüp görülmediğini kontrol etmek için bir yan etki kullanabilirsiniz, ancak bir sözlük kavrayışının içinden 'yükselemezsiniz. – jonrsharpe
Sözlük kavrama yeteneğine sahip misiniz? Belki başkası '.throw()' diyerek dict anlayışına bir istisna atar. Ama bu muhtemelen çok iyi bir tasarım değil. – Kevin