【问题标题】:Return multiple lines in a for loop在 for 循环中返回多行
【发布时间】:2019-01-06 12:30:12
【问题描述】:
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) 不支持它。

【问题讨论】:

  • 如果你把你的代码翻译成英文会很好(不是英文的部分)
  • omgekeerd 是我的字典名称,sleutel 是 key,waarde 是 value。

标签: python-3.x


【解决方案1】:

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']

【讨论】:

  • 我忘了在我的代码中添加这一行:def __str__(self)。我需要在这种方法下解决我的问题,所以我认为打印功能不起作用。
  • 发送整个类(python文件),我会编辑它
  • class Zak: ''' >>> zak = Zak('IAMDIETINGIEATQUINCEJELLYLOTSOFGROUNDMAIZEGIVESVARIETYICOOKRHUBARBANDSODAWEEPANEWORPUTONEXTRAFLESH__') >>> zak.inhoud {'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} >>> 打印(zak) 1: JKQXZ 2: BCFHMPVWY 3: G 4: DLSU 6: NRT 8: O 9: AI 12: E
  • class Zak: ''' >>> zak = Zak('IAMDIETINGIEATQUINCEJELLYLOTSOFGROUNDMAIZEGIVESVARIETYICOOKRHUBARBANDSODAWEEPANEWORPUTONEXTRAFLESH__') >>> zak.inhoud {'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} >>> 打印(zak) 1: JKQXZ 2: BCFHMPVWY 3: G 4: DLSU 6: NRT 8: O 9: AI 12: E
  • def __str__(self): omgekeerd = {} for sleutel, waarde in self.inhoud.items(): letters = omgekeerd.get(waarde, '') letters += sleutel omgekeerd[waarde] = sorted(omgekeerd) 中的 aantal 字母:返回 '{}: {}'.format(aantal, ''.join(sorted(omgekeerd[aantal]))))
猜你喜欢
  • 2013-10-13
  • 2013-01-18
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 2013-05-10
  • 2015-02-24
  • 2016-08-23
相关资源
最近更新 更多