[英]Python: Printing a single element as a string and printing a list when there are multiple elements in list
我有以下字典(其中計數(值)反向排序):
sorted_dict={'A': 4, 'W': 4, 'T': 2, 'S': 2, 'I': 2, 'R': 1}
如您所見,有 2 個鍵具有相同的值,即。 A 和 W。
我已經編寫了以下邏輯來獲得最大計數
max_count = list(sorted_dict.values())[0]
max_count_letter_list = []
在遍歷字典中的每個鍵后,我將具有最大計數的字母添加到列表中。
for letter in sorted_dict:
if sorted_dict[letter] == max_count:
max_count_letter_list.append(letter)
當打印到控制台時,它被打印為一個列表,這正是我所期望的
print("Most frequent letter \"{}\" appears {} times"
.format(max_count_letter_list, max_count))
Output: Most frequent letter "['W', 'A']" appears 4 times
但是,如果列表中有一個元素,它會打印如下:
Most frequent letter "['A']" appears 4 times
我的期望是這樣打印: Most frequent letter "A" appears 4 times
問題:在一行打印語句中,如何只打印列表中沒有括號的單個元素,如果它是一個列表,它應該打印元素列表。 我需要寫一個 if 語句還是有更好的方法來寫這個?
適合所有人的解決方案可能是用逗號連接項目
print("Most frequent letter \"{}\" appears {} times".format(",".join(max_count_letter_list), max_count))
# Giving
Most frequent letter "A,W" appears 4 times
Most frequent letter "A" appears 4 times
如果您想以不同的方式處理它們,您需要一個條件來分隔案例:一個if
,然后只需正常編寫或使用內聯模式
# inline
print("Most frequent letter \"{}\" appears {} times".format(letter_list[0] if len(letter_list) == 1 else letter_list, max_count))
# multi-line
if len(letter_list) == 1:
print("Most frequent letter \"{}\" appears {} times".format(letter_list[0], max_count))
else:
print("Most frequent letter \"{}\" appears {} times".format(letter_list, max_count))
縮短前代碼的解決方案
from itertools import groupby
from operator import itemgetter
g = groupby(sorted_dict.items(), key=itemgetter(1))
max_count, letter_list = next((count, [x[0] for x in vals]) for count, vals in g)
我認為這就是您所考慮的......根據列表中的項目數量打印不同的條件:
max_count_letter_list = ['A', 'W']
max_count = 4
print("Most frequent letter \"{}\" appears {} times".format(max_count_letter_list[0] if len(max_count_letter_list) == 1 else max_count_letter_list, max_count))
max_count_letter_list = ['A']
print("Most frequent letter \"{}\" appears {} times".format(max_count_letter_list[0] if len(max_count_letter_list) == 1 else max_count_letter_list, max_count))
結果:
Most frequent letter "['A', 'W']" appears 4 times
Most frequent letter "A" appears 4 times
print("Most frequent letter \"{}\" appears {} times"
.format((max_count_letter_list[0] if len(max_count_letter_list) ==1 else max_count_letter_list),
max_count)
我想這就是你要找的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.