如果不回傳計數為零的鍵作為值,我有一個代碼可以很好地作業。我還是 Python 新手,所以這可能是一個簡單的 tweek 問題,但不知道如何如果有 0 個計數,我如何將 0 作為鍵的值回傳。
def count_types(string):
dictionary = {}
for char in string:
if 'Z' >= char >= 'A':
dictionary.setdefault("upper", 0)
dictionary["upper"] = 1
elif 'z' >= char >= 'a':
dictionary.setdefault("lower", 0)
dictionary["lower"] = 1
elif char == ' ':
dictionary.setdefault("space", 0)
dictionary["space"] = 1
elif '9' >= char >= '0':
dictionary.setdefault("numeral", 0)
dictionary["numeral"] = 1
else:
dictionary.setdefault("punctuation", 0)
dictionary["punctuation"] = 1
return dictionary
print(count_types("aabbccc"))
輸出是:
{'lower': 7}
期望的輸出是:
{'lower': 7, 'upper': 0, 'punctuation': 0, 'space': 0, 'numeral': 0}
uj5u.com熱心網友回復:
像這樣嘗試。提前初始化字典
def count_types(string):
dictionary = {'lower':0, 'upper':0, 'space':0, 'numeral':0, 'punctuation':0}
for char in string:
if 'Z' >= char >= 'A':
dictionary.setdefault("upper", 0)
dictionary["upper"] = 1
elif 'z' >= char >= 'a':
dictionary.setdefault("lower", 0)
dictionary["lower"] = 1
elif char == ' ':
dictionary.setdefault("space", 0)
dictionary["space"] = 1
elif '9' >= char >= '0':
dictionary.setdefault("numeral", 0)
dictionary["numeral"] = 1
else:
dictionary.setdefault("punctuation", 0)
dictionary["punctuation"] = 1
return dictionary
print(count_types("aabbccc"))
輸出
{'lower': 7, 'upper': 0, 'space': 0, 'numeral': 0, 'punctuation': 0}
>
uj5u.com熱心網友回復:
代碼中的錯誤是,例如,如果字串中沒有數字字符,則 if 陳述句中的代碼永遠不會執行,因此鍵永遠不會插入到字典中。
我建議使用 0 作為默認值預先準備 dict,然后您可以洗掉所有 defaultdict 用法并使您的代碼更短:
def count_chars(string):
dictionary = {'lower': 0, 'upper': 0, 'space': 0, 'numeral': 0, 'punctuation': 0}
for char in string:
if 'Z' >= char >= 'A':
dictionary["upper"] = 1
elif 'z' >= char >= 'a':
dictionary["lower"] = 1
elif char == ' ':
dictionary["space"] = 1
elif '9' >= char >= '0':
dictionary["numeral"] = 1
else:
dictionary["punctuation"] = 1
return dictionary
print(count_chars("testtest"))
uj5u.com熱心網友回復:
我看到其他答案但您可以使用import string和使用string.ascii_uppercaseorstring.ascii_lowercase或 ...if condition如下所示:
import string
def count_types(chars):
dictionary = {'lower':0, 'upper':0, 'space':0, 'numeral':0, 'punctuation':0}
for char in chars:
if char in string.ascii_uppercase : dictionary["upper"] = 1
elif char in string.ascii_lowercase : dictionary["lower"] = 1
elif char == ' ' : dictionary["space"] = 1
elif char in string.digits : dictionary["numeral"] = 1
else : dictionary["punctuation"] = 1
return dictionary
print(count_types("a bBC123"))
輸出:
{'lower': 2, 'upper': 2, 'space': 1, 'numeral': 3, 'punctuation': 0}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/321777.html
下一篇:在給定字串中搜索一組子字串
