2016-12-02 5 views
0

私は次のクエリセットから値のリストを取得し、

s_v = SiverifyVerificationSite.objects.filter(pattern_id=int(p_id), if_target=bundle.obj.pattern.if_target).values_list('create_status', flat=True) 
    print 'svid', s_v 

は、このクエリセットは何回も実行され、それが値のリストを返します。例えばのために、クエリセットの実行の単一機会に上記のprint文のためのO/Pは、リスト内の値の

svid [1L, 1L], 
svid [6L, 8L], 
svid [1L, 6L, 1L, 1L], 
svid [1L, 6L, 1L] 

範囲は0Lから8Lになり、です。今私がリストに入れた値の優先順位をつける必要があります。 私の場合、最優先事項は8Lです。ですから、リストに8Lがあれば、私は操作を実行する必要があります。 2番目の優先順位は6Lです。 8Lと6Lの両方が同じリストに存在する場合、優先順位は8Lです。これを行う最善の方法は何ですか。ループ文を試しましたが、これは複雑な並べ替えのようです。

試みコード:

def dehydrate_orc_display(self, bundle): 

     final_data = {} 

     p_id = ''.join(x for x in bundle.obj.pdb_pid if x.isdigit()) 
     # print 'vioid', bundle.obj.pdb_id 
     s_verify = SiverifyVerificationSite.objects.filter(pdb_id=bundle.obj.pdb_id, pattern_id=int(p_id), if_target=bundle.obj.pattern.if_target) 
     s_v = SiverifyVerificationSite.objects.filter(pattern_id=int(p_id), if_target=bundle.obj.pattern.if_target).values_list('create_status', flat=True) 
     print 'svid', s_v 
     print 'fields', s_verify   
     if 8L in s_v: 
       final_data['create_status'] = 8 
     if 6L in s_v: 
       final_data['create_status'] = 6 
     if 8L and 6L in s_v: 
       final_data['create_status'] = 8 
     return final_data 
+0

これまでに試したことをお見せください! –

+0

は試したコードで編集されました。これは複数の条件を満たすものではありません。 –

答えて

1

Maintianソートされた様式での値の優先度リスト。 If-Elseはカスケード形式で動作します。したがって、ソートされたリストの0番目の値がリストに含まれている場合は、それが最優先です。そうでなければ、他の値をチェックするためにカスケードします。

新しい値については、 9Lでは、priority_listに入力してソートを確実に行う必要があります。

priority_list = [8L,7L,6L,5L,4L,3L,2L,1L] 
x = raw_input("Enter the new priority. Else press enter to continue? ") 
if len(x) > 0: 
    priority_list.append(x) 
    priority_list.sort(reverse = True) 

if priority_list[0] in s_v: 
    final_data['create_status'] = prioritylist[0] 
elif priority_list[1] in s_v: 
    final_data['create_status'] = priority_list[1] 
elif priority_list[2] in s_v: 
    final_data['create_status'] = priority_list[2] 
return final_data 
+0

パーフェクト。できます。ありがとう! –