Mój kod:

name=input("Enter name:")
print("Frequency of letters:",dict((letter,name.count(letter)) for letter in set(name)))

Ale to drukuje wynik w formacie dict. Ale chcę, aby moje wyniki wyglądały tak:

Frequency of letters: b-2,o-1

Jak zrobić mój kod do wydrukowania w tym formacie. Proszę pomóż i pokaż zmianę w kodzie. Z góry dziękuję.

-2
Shraddha Singh 1 kwiecień 2020, 16:44

5 odpowiedzi

Najlepsza odpowiedź

W ogóle nie potrzebujesz dyktowania. Dotyczy to tylko małych liter alfabetu, bez użycia importu (chociaż przy użyciu string.ascii_lowercase byłoby bardziej przydatne).

name = 'bob'
print("Frequency of letters:",','.join(('{}-{}'.format(letter,name.lower().count(letter))
        for letter in set(name.lower())
        if letter in "abcdefghijklmnopqrstuvwxyz")))
2
Jongware 1 kwiecień 2020, 20:36

Jeśli kod dyktowania jest prawidłowy:

name=input("Enter name:")
count_dict = dict((letter,name.count(letter)) for letter in set(name))
format_string_list = [f"{k}-{v}" for k, v in count_dict.items()]
# or generator
# format_string_gen = (f"{k}-{v}" for k, v in count_dict.items())
print(f"Frequency of letters:{','.join(format_string)}")
1
DustyPosa 1 kwiecień 2020, 13:47

Spróbuj tego poniżej:

name = input("Enter name:")
output_dict = {}
for i in name:
    if i in output_dict:
        output_dict[i] += 1
    else:
        output_dict[i] = 1
for i in output_dict:
    print("Frequency of Letters: ", i, "-", output_dict[i])
1
Abhishek Kulkarni 1 kwiecień 2020, 13:51

Powinno to dać pożądany wynik

from collections import Counter 

test_str = input()

count = Counter(test_str)

for k, v in count.items():
    print(k + '-' + str(v) + ',', end=' ')
0
Dhaval Taunk 1 kwiecień 2020, 13:54

Użyj licznika, aby policzyć częstotliwość. Nie sądzę również, że potrzebujesz miejsca, aby policzyć, jeśli jest. Pomiń więc spację, a następnie sformatuj ciąg

from collections import Counter
import re

name = 'John Jonson'    
name= re.sub('\s','',name)

for k,v in Counter(name).items():
    print('{}-{}'.format(k,v), end=",")

Bez używania Counter

d={}
for letter in name:
    d[letter] = d.get(letter, 0) + 1

for k,v in d.items():
    print('{}-{}'.format(k,v), end=",")
0
mad_ 1 kwiecień 2020, 14:07