如何基于键值对筛选列表元素并添加至新列表?
问题解决与代码修正
代码里的两个核心错误
- 获取
loan_price的方式错误:你循环的是loans列表,item才是列表里的每个字典元素,应该用item.get("loan_price")或者item["loan_price"],而不是loans.get("loan_price")(loans是列表,没有get方法)。 append方法调用错误:inexpensive_loans.append只是引用了方法,没有执行添加操作,必须加上括号和要添加的元素,也就是inexpensive_loans.append(item)。
正确的代码写法
loans = [ { "loan_price": 700, "remaining_months": 9, "repayment_interval": "monthly", "future_value": 1000, }, { "loan_price": 500, "remaining_months": 13, "repayment_interval": "bullet", "future_value": 1000, }, { "loan_price": 200, "remaining_months": 16, "repayment_interval": "bullet", "future_value": 1000, }, { "loan_price": 900, "remaining_months": 16, "repayment_interval": "bullet", "future_value": 1000, }, ] inexpensive_loans = [] for item in loans: # 直接从循环的当前字典元素中取loan_price if item["loan_price"] <= 500: inexpensive_loans.append(item) print(f"{inexpensive_loans}")
针对你的问题解答
- 怎么获取列表中元素的
loan_price值?:在遍历列表的循环里,每个item就是列表中的字典对象,直接用item["loan_price"](适合确定每个字典都有该键的场景)或者item.get("loan_price")(适合可能存在无该键的场景,会返回None)就能拿到对应的值。 - 是否需要先获取该值再执行循环?:不需要。直接在循环过程中逐个处理列表里的元素,同时取出
loan_price判断条件即可,这样更高效简洁。
内容的提问来源于stack exchange,提问作者Jeffrey Crabill
相关产品推荐
相关产品推荐

