2017-02-18 63 views
-2

我想建立一個函數來根據hashtag返回它的聚會。這是我得到的:函數python的條件返回

def party(tw) #define party by compare hashtag to a predefined list 
    #extract hashtag words from tw, and store them in tag_dict 
    tag_dict={tag.strip("#") for tag in tw.split() if tag.startswith("#")} 
    tag in tag_dict 

    #Compare each hashtag with Party Number of each hash tag, assign and party number to each hashtag 
    party_number={k:int(party_tag[k]) for k in tag_dict if k in party_tag} 

    #extract the value of party number to a variable: number 
    number = party_number.values() 

    if number==1 
     return "Liberal" 
    if number==2 
     return "Conservative" 
    if number==3 
     return "NPD" 
    if number==0 
     return "Other" 

我該如何寫條件回報?當推文有幾個派對的話題標籤時,我該如何處理?

+2

'number'不是一個數字,而是一個數字列表(字典值的視圖)。應該返回的功能是什麼?派對名單? –

回答

0

如果它總是一個整數,你可以建立一個列表並根據該列表返回適當的值。如:

from random import randint 

def return_something(): 
    parties = ["Other", "Liberal", "Conservative", "NPD"] 
    number = randint(0,3) 
    print(number) 
    try: #return number if exist (could change "not found" to "Other" 
    return parties[number] 
    except IndexError: #I.E. not in the list 
    return "Party not found." 

print(return_something()) 

如果有字符串值,你可以使用字典來代替,比如這個示例代碼:

parties = {'dem': "Liberal", 'rep': "Conservative", 'market': "NPD"} 
#Defining the dictionary out of the function so it doesn't have to be rebuilt 

def return_something(p): 
    return parties.get(p, 'Other') #fetches and returns a value or a default ("Other") 

party = "not in tag" #or whatever you use to get values 
print(return_something(party)) 

或者:

def return_something(p): 
    return { 
     'dem': "Liberal", 
     'rep': "Conservative", 
     'market': "NPD" 
    }.get(p, "Other") 

print(return_something("market")) 
+0

謝謝。我改變了數據類型,所以它可以直接返回一個字符串。 –