SORU
21 Kasım 2011, PAZARTESİ


Nasıl eğer bir değeri bir sözlük (python)olup olmadığını kontrol etmek için

Merhaba python aşağıdaki sözlük var:

d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}

Bir şekilde bu "bir" veya "İki" bu sözlük var. bir değeri varsa bulmam lazım

Eğer dizin varsa bilmek istedim örneğin, "1" var sadece yazın olurdu:

"1" in d

Ve sonra python eğer bir değeri varsa bulmak dışında aynı şeyi yapmak istiyorum, doğru ya da yanlış olup olmadığını söyle. Herhangi bir yardım için teşekkürler.

CEVAP
21 Kasım 2011, PAZARTESİ


>>> d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
>>> 'one' in d.values()
True

Meraktan soruyorum, bazı karşılaştırmalı zamanlama:

>>> T(lambda : 'one' in d.itervalues()).repeat()
[0.28107285499572754, 0.29107213020324707, 0.27941107749938965]
>>> T(lambda : 'one' in d.values()).repeat()
[0.38303399085998535, 0.37257885932922363, 0.37096405029296875]
>>> T(lambda : 'one' in d.viewvalues()).repeat()
[0.32004380226135254, 0.31716084480285645, 0.3171098232269287]

DÜZENLEME:Ve eğer merak ediyorsan, neden... neden yukarıdaki her olabilir ya da arama işlemleri için uygun olmayabilir, hangi nesne, farklı bir tür verir

>>> type(d.viewvalues())
<type 'dict_values'>
>>> type(d.values())
<type 'list'>
>>> type(d.itervalues())
<type 'dictionary-valueiterator'>

EDİT2:Yorum isteğine göre...

>>> T(lambda : 'four' in d.itervalues()).repeat()
[0.41178202629089355, 0.3959040641784668, 0.3970959186553955]
>>> T(lambda : 'four' in d.values()).repeat()
[0.4631338119506836, 0.43541407585144043, 0.4359898567199707]
>>> T(lambda : 'four' in d.viewvalues()).repeat()
[0.43414998054504395, 0.4213531017303467, 0.41684913635253906]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Droid Life

    Droid Life

    17 Kasım 2009
  • Just So

    Just So

    3 HAZİRAN 2007
  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011