2012-02-29 18 views
1

如何檢查密鑰是否有'extra_'dict如何檢查值,如果它有一個像/相同的密鑰在python字典?

這個我做了什麼:

>>> dict = { u'last_name': [u'hbkjh'], u'no_of_nights': [u'1'], u'check_in': [u'2012-03-19'], u'no_of_adult': [u'', u'1'], u'csrfmiddlewaretoken': [u'05e5bdb542c3be7515b87e8160c347a0'], u'memo': [u'kjhbn'], u'totalcost': [u'1800.0'], u'product': [u'4'], u'exp_month': [u'1'], u'quantity': [u'2'], u'price': [u'900.0'], u'first_name': [u'sdhjb'], u'no_of_kid': [u'', u'0'], u'exp_year': [u'2012'], u'check_out': [u'2012-03-20'], u'email': [u'[email protected]'], u'contact': [u'3546576'], u'extra_test1': [u'jknj'], u'extra_test2': [u'jnjl'], u'security_code': [u'3245'], u'charged': [u'200.0']} 
>>> for x in dict: 
... x 
... 
u'totalcost' 
u'check_in' 
u'last_name' 
u'extra_test2' 
u'memo' 
u'extra_test1' 
u'product' 
u'email' 
u'charged' 
u'no_of_nights' 
u'no_of_kid' 
u'contact' 
u'exp_month' 
u'first_name' 
u'no_of_adult' 
u'csrfmiddlewaretoken' 
u'exp_year' 
u'check_out' 
u'price' 
u'security_code' 
u'quantity' 
>>> 

這就是我想成爲的輸出,如果dict有一個像'extra_'鍵:提前

u'extra_test1' : [u'jknj'] 
u'extra_test2' : [u'jnjl'] 

感謝...

回答

3

使用字典理解:

>>> {k: v for k,v in d.iteritems() if k.startswith('extra_')} 
{u'extra_test1': [u'jknj'], u'extra_test2': [u'jnjl']} 
+0

謝謝wim,它幫助我很多 – gadss 2012-02-29 09:59:10

2

唯一的方法是迭代鍵並測試它們:

for key in dict_.iterkeys(): 
    if key.startswith('extra_'): 
     ... 
6
In [4]: dict((k,v) for k,v in d.items() if k.startswith('extra_')) 
Out[4]: {u'extra_test1': [u'jknj'], u'extra_test2': [u'jnjl']} 

其中d是你的字典。我已將其重命名,因此它不會影響builtin

+0

您可以在Python 2.7及以上版本使用字典理解語法,使代碼更易讀。請參閱[此問題的答案](http://stackoverflow.com/a/1747827/446456)。 – eksortso 2012-02-29 10:56:10

2
for k in your_dict: 
    if k.startswith('extra_'): 
     print '%r : %r' % (k, your_dict[k]) 
相關問題