我有一個編碼任務,我需要創建一個程式來檢查名稱字典包含字母 R、M、A、K 和 C 的次數。所以在這種情況下,我有這本字典:
dict = {"Renata", "Maciek", "Marek", "Karolina", "Marcel}
我需要創建一個回圈,逐個檢查字典中所有名稱中的所有字母。一旦完成,它需要將結果放入一個串列中,并在程式結束時回傳該串列。所以結果看起來像
R - 4 M - 2 A - 3.(數字只是舉例) K - 5 C - 6
這是我到目前為止:
names = {"Renata", "Marek", "Maciek", "Karolina", "Marcel"}
letter = ['R', 'M', 'A', 'K', 'C']
counter = 0
for letter in names:
print("R =", names.count("R"))
print("M =", names.count("M"))
print("A =", names.count("A"))
print("K =", names.count("K"))
print("C = ", names.count("C"))
如您所見,我對 Python 非常陌生,因此我將不勝感激一些輸入或幫助。請顯示您對代碼所做的更改。先感謝您
uj5u.com熱心網友回復:
例如,這種方式:
names = {"Renata", "Marek", "Maciek", "Karolina", "Marcel"}
names_concatenated = "".join(names).upper()
letters = ['R', 'M', 'A', 'K', 'C']
for letter in letters:
print(f"Letter '{letter} occurrences count in `names`: "
f"{names_concatenated.count(letter)}")
在這里,我們有:
Letter 'R' occurrences count in `names`: 4
Letter 'M' occurrences count in `names`: 3
Letter 'A' occurrences count in `names`: 7
Letter 'K' occurrences count in `names`: 3
Letter 'C' occurrences count in `names`: 2
uj5u.com熱心網友回復:
Counter內置collections庫中的子類對于這種事情非常方便。我會像這樣實作它:
from collections import Counter
names = {"Renata", "Marek", "Maciek", "Karolina", "Marcel"}
all_letters = ''.join(names).upper()
counter = Counter(all_letters)
for l in ['R', 'M', 'A', 'K', 'C']:
print(l, ":", counter[l])
輸出:
R : 4
M : 3
A : 7
K : 3
C : 2
uj5u.com熱心網友回復:
這是一種方法:
names = {"Renata", "Marek", "Maciek", "Karolina", "Marcel"}
# Create a dictionary that maps each letter that we're tracking to a frequency counter.
letter_counters = {'R': 0, 'M': 0, 'A': 0, 'K': 0, 'C': 0}
# Go through the set of names, one at a time, and add the frequency of each letter that we're tracking to our counters.
# .upper() is used to make our counting case-insensitive.
for name in names:
for letter in letter_counters:
letter_counters[letter] = name.upper().count(letter)
# Transform the dictionary into a list. (This could be made more concise using a list comprehension, though this is not immediately relevant to the question.)
result = []
for letter in letter_counters:
result.append([letter, letter_counters[letter])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/395685.html
上一篇:Python:如果我有一個dicts{person_id,list,account}串列,如何洗掉重復的person_id并組合串列值?
