我正在嘗試制作一個游戲,您可以通過擾亂主要單詞中的一些字母來形成與另一個單詞不同的單詞。我有一個子詞串列,但如果主詞有一個雙字母(在這種情況下像'r'),它不會將帶有單個 r 的字串添加到勝利串列中。我怎樣才能解決這個問題?
from collections import Counter
victory = []
if __name__ == "__main__":
main_word = "burner"
subwrds = ['run', 'rue', 'brr', 'bun', 'bur', 'err', 'nub', 'rub', 'urn', 'burr',
'rube', 'burn', 'rune', 'rerun', 'burner', 'bee', 'ebb']
mw_counter = Counter(main_word)
mw_key = list(mw_counter.keys())
print(mw_key)
mw_value = list(mw_counter.values())
for wrd in range(len(subwrds)):
subwrds_count = Counter(subwrds[wrd])
subwrds_key = list(subwrds_count.keys())
print(list(subwrds[wrd]))
if subwrds_count.items() <= mw_counter.items():
victory.append(subwrds[wrd])
print(victory)
uj5u.com熱心網友回復:
問題是這一行:
if subwrds_count.items() <= mw_counter.items():
.items()字典(或計數器)的方法通過(鍵,值)對回傳視圖物件,其行為類似于集合。
Counter(X).items() <= Counter(Y).items()當且僅當 的每個成員的X頻率與其在 中的頻率相同時才會成立Y。
例如:
Counter('b').items() <= Counter('bb').items() # False
是False,因為{('b', 1)}不是 的子集{('b', 2)}。
如果您有 Python 3.10 或更高版本,Counter 現在支持豐富的比較,因此可以檢查“單詞爭奪”關系(即多集包含):
if subwrds_count <= mw_counter:
直接比較兩個Counter物件。否則,您可以使用
if all(subwrds_count[x] <= mw_counter[x] for x in subwrds_count):
uj5u.com熱心網友回復:
您可以通過for回圈訪問計數器的鍵和值,并通過值比較獲得所需的鍵。
from collections import Counter
victory = []
if __name__ == "__main__":
main_word = "burner"
subwrds = ['run', 'rue', 'brr', 'bun', 'bur', 'err', 'nub', 'rub', 'urn', 'burr',
'rube', 'burn', 'rune', 'rerun', 'burner', 'bee', 'ebb']
mw_counter = Counter(main_word)
mw_key = list()
mw_value = list()
for key, value in mw_counter.items():
if value == 1:
mw_key.append(key)
mw_value.append(value)
for wrd in range(len(subwrds)):
subwrds_count = Counter(subwrds[wrd])
subwrds_key = list(subwrds_count.keys())
print(list(subwrds[wrd]))
if subwrds_count.items() <= mw_counter.items():
victory.append(subwrds[wrd])
print(victory)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/425608.html
上一篇:如何從多維陣列計算最大精度?
