python - 返回 f 字符串的 for 循环函数
问题描述
我是 python 新手,正在尝试编写一个函数,该函数接受一个字典列表并返回一个新的字符串列表,其中每个字典中的名字和姓氏键连接在一起。
names = [{'first': 'John', 'last': 'Smith'}, {'first': 'Jessie', 'last': 'Snow'}]
def name_function(lst):
for name in lst:
return f"{name['first']} {name['last']}"
names_function(names)
'John Smith'
我编写了一个 for 循环,它遍历字典列表并返回一个 f 字符串,该字符串连接每个字典中的名字和姓氏键,但是,循环无法迭代到第一个键之外,我希望有人能指出我问题。
解决方案
当你有一个循环时,你也有一个return
内部循环。在列表的第一次迭代中,这return
将被命中并且函数的执行将在那里停止,只返回该行上的值——这是一个字符串——而不是预期的列表。
您要么需要在函数中添加一个列表以用作累加器,然后再返回 -</p>
def names_function(lst):
names = []
for name in lst:
names.append(f"{name['first']} {name['last']}")
return names
或者使用列表理解
def names_function(lst):
return [f"{name['first']} {name['last']}" for name in lst]
names_function(names)
两者都会输出
['John Smith', 'Jessie Snow']
您也可以将其替换为return
ayield
以将其变成生成器。要获取您需要迭代生成器(或调用list
它)的所有值
def names_function(lst):
for name in lst:
yield f"{name['first']} {name['last']}"
list(names_function(names))
这给出了相同的结果
['John Smith', 'Jessie Snow']
推荐阅读
- bazel - bazel 获取从命令行传入的 --copt
- python - 在嵌套的 for 循环中附加 DataFrame 而不附加 NaN 值
- python - 在python中,当对象可能为None时,如何检查两个对象是否具有相同的属性值?
- r - 如何将列表导出到 R 中的自格式化文本文件中?
- php - 如何解决 color-thief-php 中的 RunTimeExeption 错误
- sql - 如何使用 SQL 过滤掉超出(但未达到)阈值限制的行?
- python - sklearn 的 pipeline 可以用来平衡和拆分数据集吗?
- python - 没有为 pandas==1.3.1 找到匹配的分布
- java - 如何测试使用回调的函数?
- typescript - 如何在打字稿中获取枚举成员索引(不是成员名称)?