我需要布爾命名串列REPORTED [" true "," false "," true "," false "," false "]將其轉換為一個型別bool: [true, false, true],然后把它在我執行下面的代碼,試圖讓這取決于2串列在這種情況下,總的平均百分比的條件s.Body [Physical appearance]和s.Reported [true: reported]那就是:計算有多少人與物理方面[fat, muscular, skinny]不是Reported [false]并獲得每個方面的百分比
我的問題是,如果不在 bool 中,我不需要“true”或“false”(在 str 中)并且我不知道如何放置條件來識別我認為我轉換的 bool
def porcentaje (Doc):
Datos2 = [s.Cuerpo for s in Doc if s.DENUNCIADO ] #
ConvertidorBool = list(map(lambda ele: ele == "false", Datos2))
Datos=[s.Cuerpo for s in Doc if ConvertidorBool == "false"] # condicion
CC = {Ca: Datos.count(Ca)*100/1000 for Ca in Datos if Ca !=""}
Contador = Counter(CC)
Agrupador = Contador.items()
Porcentaje = dict(Agrupador)
Resultado= print("{}".format(Porcentaje))
return Resultado
uj5u.com熱心網友回復:
您可以使用ast.literal_eval:
>>> import ast
>>> ast.literal_eval(" true ".strip().title())
True
>>> ast.literal_eval(" false ".strip().title())
False
看起來您只需要去除值中的任何周圍空白并正確地將它們大寫以創建包含完全bool文字的字串。
但是,literal_eval不關心型別,因此如果您的串列可以包含像"5"or 之類的非布爾文字"'foo'",那么literal_eval將很樂意為您創建5和'foo'。在這種情況下,顯式比較可能是一個更好的主意(也更有效)。
uj5u.com熱心網友回復:
如果你知道資料是[" true "," false "," true "," false "," false "]你所能做的:
li=[" true "," false "," true "," false "," false "]
>>> [True if "true" in s else False for s in li]
[True, False, True, False, False]
或者:
>>> [True if s.strip()=="true" else False for s in li]
[True, False, True, False, False]
# [s.strip()=="true" for s in li] works too...
如果源串列中有不相關的字串,您可以執行以下操作:
>>> [True if "true" in s else False for s in [s for s in li if "true" in s or "false" in s]]
[True, False, True, False, False]
或者:
[True if s=="true" else False for s in [s for s in map(lambda x: x.strip(),li) if s=="true" or s=="false"]]
或者:
di={'true':True, 'false':False}
[di.get(s.strip(), None) for s in li]
uj5u.com熱心網友回復:
看起來你幾乎自己修復了它。但我建議您嘗試用以下內容替換第 3 行和第 4 行:
ConvertidorBool = list(map(lambda ele: ele == " true ", Datos2))
Datos=[s.Cuerpo for s in Doc if ConvertidorBool == False] # condicion
uj5u.com熱心網友回復:
感謝@dawg 的代碼,我能夠讓我的 str (bool) 成為真正的 bool 我留下了代碼,因為我寫了它,我開始添加:
def percentage (Doc):
DataBool = [s.DENOUNCIADO for s in Doc]
Converter_A_Bool = [True if "true" in s else False for s in DataBool]
Data = [s.Body for s in Doc if Converter_A_Bool [0] == False]
CC = {Ca: Datos.count (Ca) * 100/1000 for Ca in Data if Ca! = ""}
Counter = Counter (CC)
Grouper = Counter.items ()
Dictionary = dict (Grouper)
Result = print ("{}". Format (Dictionary))
return Result
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403615.html
標籤:
