不带括号的打印字典

Printing dictionary without brackets

我正在尝试为一个练习编写一个脚本,该脚本允许我整理字符串中的字符并计算出现次数最多的字符,但我似乎无法以字符串的形式打印出结果作为一个元组。如果有人知道我该怎么做,将不胜感激。

import sys

stringInput = (sys.argv[1]).lower()
stringInput = sorted(stringInput)
DictCount = {}
Dictionary = {}


def ListDict(tup, DictStr):
    DictStr = dict(tup)
    return DictStr


for chars in stringInput:
    if chars in Dictionary:
        Dictionary[chars] += 1
    else:
        Dictionary[chars] = 1

ListChar = sorted(Dictionary.items(), reverse=True, key=lambda x: x[1])

Characters = (ListChar[0], ListChar[1], ListChar[2], ListChar[3], ListChar[4])

print(ListDict(Characters, DictCount))

当前输出:

python3 CountPopularChars.py sdsERwweYxcxeewHJesddsdskjjkjrFGe21DS2145o9003gDDS
{'d': 7, 's': 7, 'e': 6, 'j': 4, 'w': 3}

期望的输出:

d:7,s:7,e:6,j:4,w:3

以这种方式创建输出:

output = ','.join(f"{k}:{v}" for k, v in ListChar)
print(output)

输出:

e:17,d:7,a:3,b:1,c:1

尝试:

yourDict = {'d': 7, 's': 7, 'e': 6, 'j': 4, 'w': 3}
print(','.join("{}:{}".format(k, v) for k, v in yourDict.items()))

输出:

d:7,s:7,e:6,j:4,w:3

或者只是:

>>> dct = {'d': 7, 's': 7, 'e': 6, 'j': 4, 'w': 3}
>>> ','.join(f'{k}:{v}' for k,v in dct.items())
'd:7,s:7,e:6,j:4,w:3'

您的代码非常冗余。您可以使用 collections.Counter 帮助以更简洁的方式编写它:

from collections import Counter

# Hard coded stringInput for ease in this test
stringInput = 'sdsERwweYxcxeewHJesddsdskjjkjrFGe21DS2145o9003gDDS'.lower()

c = Counter(stringInput)

ListChar = sorted(c.items(), reverse=True, key=lambda x: x[1])

print(','.join(f"{k}:{v}" for k, v in ListChar[:5]))