繁体   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