[英]How to output values from a dictionary without printing it out as a list?
我被分配來按書法將anag分組在一起。
以下是測試案例之一:
輸入: eat tea tan ate nat bat
輸出:
ate eat tea bat nat tan
但是,我不斷得到以下輸出,其中將字謎封裝在列表中,並且每行的打印順序每次都不同:
['ate', 'eat', 'tea'] ['nat', 'tan'] ['bat']
或
['nat', 'tan'] ['bat'] ['ate', 'eat', 'tea']
或
['ate', 'eat', 'tea'] ['bat'] ['nat', 'tan']
如何解決此問題,使其輸出而不會在列表中加蓋,也可能以正確的順序加蓋?
這是我到目前為止所做的:
import sys
from collections import *
def ComputeAnagrams(string):
d = defaultdict(list)
for word in string:
key = ''.join(sorted(word))
d[key].append(word)
return d
def main():
for string in sys.stdin:
stringList = string.split()
if len(stringList) == 0:
break
d = ComputeAnagrams(stringList)
for key,anagrams in d.items():
if len(anagrams) >=1:
print(sorted(anagrams))
print ('')
main()
注意:運行該程序的計算機從stdin / keyboard讀取輸入,並將輸出打印到console(stdout)。
我相信問題是-
print(sorted(''.join(anagrams)))
將列表連接到字符串后,您將使用sorted
,在這種情況下,sorted將按排序順序返回一個字符列表(我想這是您得到的當前輸出)。
如果要按排序順序排列元素,則應在anagrams
列表上使用sorted,而不要在加入后使用字符串。 范例-
print(', '.join(sorted(anagrams)))
我還使用', '
來連接字符串,以便使用,
作為分隔符,否則輸出將所有字符串都在一起,而中間沒有任何空格,如果需要,可以使用任何其他分隔符。
演示-
經過以上更改-
輸入-
eat tea tan ate nat bat
輸出-
bat
ate, eat, tea
nat, tan
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.