【问题标题】:Iteration through a dictionary using a function使用函数迭代字典
【发布时间】:2021-09-22 18:31:51
【问题描述】:

为什么code1输出字典中的所有值而code2只输出一项

我的代码1:

resources = {
"water": 300,
"milk": 200,
"coffee": 100, }                                                                             
def available(dict):
    for k,v in dict.items():
        print(f'{k}:{v}')

available(resources)

输出1:

water:300
milk:200
coffee:100

我的代码2

resources = {
"water": 300,
"milk": 200,
"coffee": 100,}                                                                             
def available(dic):
    for char in dic:
        return f'{char}:{dic[char]}'                                  
print((available(resources)))

输出2

water:300

【问题讨论】:

  • return 标志着函数的结束。只要你这样做,功能就结束了
  • 您可能不应该使用dict 作为变量/参数名称,它是内置的。这很容易引起混乱和错误
  • 它是因为返回命令。它只从你的函数返回一个值。

标签: python


【解决方案1】:

code1 中,您使用print,它不会终止函数,而在code2 中,您使用returnreturn 语句立即终止函数执行并返回该值。

如果您想返回 code2 中的所有值并以与 `code` 中相同的方式打印它们,请使用以下代码:

resources = {
"water": 300,
"milk": 200,
"coffee": 100,}                                                                             
def available(dic):
    return [f'{char}:{dic[char]}' for char in dic]

# here we join all the elements in the list using '\n'
print('\n'.join(available(resources))) ```

【讨论】:

    【解决方案2】:

    return关键字用于标记函数的结束。因此,当执行 return 语句时,您的函数将结束。然后,在return... 之前只迭代一个元素,因此只打印一个值。

    您可能正在寻找的是

    def available(dic):
        return [f'{char}:{dic[char]} for char in dic]'
    

    【讨论】:

      【解决方案3】:

      my code2 中,您调用的是return 而不是print

      如果要返回从my code1 打印的字符串,请将@​​987654325@ 修改为如下所示:

      resources = {
      "water": 300,
      "milk": 200,
      "coffee": 100,}
                                                                                   
      def available(dic):
          s = ''
          for char in dic:
              s += f'{char}:{dic[char]}\n'
          return s
                                        
      print((available(resources)))
      

      【讨论】:

        【解决方案4】:

        因为返回命令。它只从您的函数返回一个值。您可以使用以下代码对此进行测试:

        resources = {
        "water": 300,
        "milk": 200,
        "coffee": 100,}                                                                             
        def available(dic):
            for char in dic:
                print( f'{char}:{dic[char]}')                                 
        available(resources)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-09-04
          • 2014-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-26
          • 2013-12-03
          相关资源
          最近更新 更多