2016-03-23 21 views
-1

nedir herhangi bir harici kütüphaneleriPython: sözlükte her değerlerini doğrulama

for example dict = {"A":"some_string", 
        "B":12, 
        "C":83, 
        "D":56.......so on} 

Ben anahtar A ise o zaman değeri olmalıdır böyle doğrulamak zorunda kullanarak dışarı ile sözlükte her değerlerini doğrulamak için en iyi yolu string ve anahtar B ise anahtar C sonra değeri int olmalıdır ve 1 çok anahtara göre 100, değerleri için doğrulama da değişir arasında değişir, o zaman bir değer ...

int olabilir ve 1 to 20 arasında değişir olmalıdır

Bunu yapmak için daha kısa bir yol var mı?

typeExpected = {'A':str, 'B':int} 

anahtar A string içermelidir ve anahtar B int içermelidir anlamına: my sözlük boyutu

+2

vardır? Ve karşılık gelen değer gereksinimleri arasında herhangi bir desen var mı? – niyasc

+1

Bu kurallar nereden kaynaklandı? Bu olmadan, çok iyi tanımlanmış bir soru değil. –

+2

Doğrulama işlevleriyle eşlenen anahtarlı başka bir sözlük oluşturun ve "validations [key] (value)" gibi bir şey kullanın – Bahrom

cevap

4

Burada başka sözlükle bir yaklaşımdır:

d = {"A":"some_string", 
    "B":12, 
    "C":83, 
    "D":56} 

# Map your validation functions to the keys 
validations = { 
    "A": lambda x: isinstance(x, str), 
    "B": lambda x: isinstance(x, int) and 1 <= x <= 20, 
    "C": lambda x: isinstance(x, int) and 1 <= x <= 100, 
} 

for k, v in d.items(): 
    print(validations.get(k, lambda x: False)(v)) # Default validation just returns False (invalid) 

Sözlük geçerli olup olmadığını kontrol etmek için kullanabilirsiniz: Kaç tuşları

print(all(validations.get(k, lambda x: False)(v) for (k, v) in d.items())) 
0

Diyelim ki bir sözlükte beklenen türlerini tanımlamak diyelim çok büyük. Senin Sözlük gerçekten çok büyükse

map(lambda x: type(exampleData[x]) == typeExpected[x], exampleData) 

verilerinizin bu Deneyin ve: Eğer çalıştırarak türleri doğruluğunu kontrol edebilirsiniz Şimdi

exampleData = {'A':'ok', 'B':0} 

: olarak en sınamak istediğiniz sözlüğü tanımlayalım Çok işlemlerde çalışmak için haritayı havuza dönüştürmek kolay olurdu.

İlgili konular