2014-01-06 29 views
0

我有下面的代碼返回8的Django如果值是列表

resume_menu_a_detail_val = settings.MENU_DETAIL_VALUE_A_DETAILS #8 

下面回報的代碼此列表:[u'0', u'1', u'22', u'2', u'3', u'4', u'5', u'26', u'6', u'7', u'23', u'8', u'9', u'25', u'11', u'12', u'10', u'13', u'14', u'27', u'15', u'24', u'16', u'17', u'18', u'19', u'20', u'21']

resume_menu_list01 = request.user.get_profile().selected_resume_menu_entries.split(',') 

if聲明如下總是返回假條件(值爲8在列表中):

if resume_menu_a_detail_val in resume_menu_list01: 
    return {'resume_menu_list01': 'TRUE'}    
else: 
    return {'resume_menu_list01': 'FALSE'} 

如何獲得if語句以識別列表中的8

另外,如何從最低值到最高值對列表進行排序?

回答

3

您比較字符串和整數;他們是不一樣的所以它們不相等:

>>> u'8' == 8 
False 

他們可以打印相同,但它們不是一回事。你有你的整數轉換成字符串unicode()

if unicode(resume_menu_a_detail_val) in resume_menu_list01: 

排序resume_menu_list01,只需撥打.sort()它:

resume_menu_list01.sort() 

這將字典順序排序呢;按照他們的字符的順序;例如,'21''3'之前分類。排序數字你需要告訴sort()每個值轉成整數的比較:

resume_menu_list01.sort(key=int) 

有關詳細信息,請參閱Python sorting how-to

+0

感謝您的協助。很棒! – user1261774

0

您正在嘗試將整數8看成包含字符'8'的字符串。因此沒有找到它的說法。

您可能需要改變,如果搜索字符爲'8'

#--v use str() 
    if str(resume_menu_a_detail_val) in resume_menu_list01: 

     return {'resume_menu_list01': 'TRUE'} 

    else: 

     return {'resume_menu_list01': 'FALSE'} 
相關問題