我觉得这可以在一行中完成,但我找不到办法。
# final_list is what I want as an output
final_list = []
for x in some_list:
# y is a dictionary
y = x.get_some_dict()
# Want to add a new key/value pair to y, which comes from x
y.update({"new_key": x.property_in_x})
# append y to the output list
final_list.append(y)
return final_list
答案 0 :(得分:2)
我不建议将其折叠成单行列表理解。它可以做到,但它的风格很糟糕。列表推导不应该有副作用(即调用update
)。
您可以替换与生成器附加的显式列表。这不是一个坏主意。 d[k] = v
比d.update({k: v})
简单。
def final_list(some_list):
for x in some_list:
y = x.get_some_dict()
y["new_key"] = x.property_in_x
yield y
答案 1 :(得分:0)
下面是等效的列表理解表达式以及for循环:
final_list = [x.get_some_dict() for x in some_list]
for dict_item, base_item in zip(final_list, some_list):
dict_item["new_key"] = base_item.property_in_x
答案 2 :(得分:0)
我不建议将它阻尼成一个衬里,这可能(可能)凌乱且难以理解。此外,update
对单线程解决方案产生了问题。
但是,在我看来,这可以简化,更清楚: (缩短,但不是不可读的一个班轮)
for x in some_list:
x.get_some_dict().update({"new_key": x.property_in_x})
final_list = [y.get_some_dict() for y in some_list]