簡體   English   中英

如何從詞典中輸出值而不將其打印為列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM