在for循环中返回多行

时间:2019-01-06 12:30:13

标签: python-3.x

d = {'U': 4, '_': 2, 'C': 2, 'K': 1, 'D': 4, 'T': 6, 'Q': 1, 'V': 2, 'A': 9, 'F': 2, 'O': 8, 'J': 1, 'I': 9, 'N': 6, 'P': 2, 'S': 4, 'M': 2, 'W': 2, 'E': 12, 'Z': 1, 'G': 3, 'Y': 2, 'B': 2, 'L': 4, 'R': 6, 'X': 1, 'H': 2}
    def __str__(self):
    omgekeerd = {}
    for sleutel, waarde in self.inhoud.items():
        letters = omgekeerd.get(waarde, '')
        letters += sleutel
        omgekeerd[waarde] = letters
    for aantal in sorted(omgekeerd):
        return '{}: {}'.format(aantal, ''.join(sorted(omgekeerd[aantal])))

我需要返回该值,然后返回“:”,然后返回每个具有该值的字母。

问题是当我使用return时,它只返回一个值,而不是换行中的所有值。

我不能使用print(),因为 str (self)方法不支持该功能。

1 个答案:

答案 0 :(得分:0)

  

return语句结束函数执行并指定一个值以   返回给函数调用者。

我相信您的代码由于return语句使用错误而终止得太早了。

您可以做的是将要返回的内容存储在单独的列表/字典中,然后在完成所有操作后,可以返回将结果存储在其中的新字典/列表。

如果我对您的理解正确;这可能是寻找的东西:

def someFunc():
    d = {'U': 4, '_': 2, 'C': 2, 'K': 1, 'D': 4, 'T': 6, 'Q': 1, 'V': 2, 'A': 9,
    'F': 2, 'O': 8, 'J': 1, 'I': 9, 'N': 6, 'P': 2, 'S': 4, 'M': 2, 'W': 2, 'E': 12,
    'Z': 1, 'G': 3, 'Y': 2, 'B': 2, 'L': 4, 'R': 6, 'X': 1, 'H': 2}

    result = {}
    for key, value in d.iteritems():
        result[value] = [k for k,v in d.iteritems() if v == value]

    return result

# call function and iterate over given dictionary
for key, value in someFunc().iteritems():
    print key, value

结果:

1 ['K', 'J', 'Q', 'X', 'Z']
2 ['C', 'B', 'F', 'H', 'M', 'P', 'W', 'V', 'Y', '_']
3 ['G']
4 ['D', 'L', 'S', 'U']
6 ['N', 'R', 'T']
8 ['O']
9 ['A', 'I']
12 ['E']