使用函数遍历字典

时间:2021-07-13 17:22:26

标签: python

为什么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

4 个答案:

答案 0 :(得分:3)

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))) ```

答案 1 :(得分:2)

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

您可能正在寻找的是

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

答案 2 :(得分:0)

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

如果要返回从 my code1 打印的字符串,请将 my code2 修改为:

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)))

答案 3 :(得分:0)

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

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