如何移除字典子列表末尾两元素?能否无循环保留子列表首元素?
问题解答
问题1:如何从字典的每个子列表中移除最后两个元素?
用列表推导式结合切片语法就能快速处理,[:-2]会直接截取子列表去掉最后两个元素的部分:
data = [ { "x":1640995200000, "y": [2365,2567.300049,2305,2386.600098] }, { "x":1643673600000, "y": [2408,2456.399902,2243,2359.550049] }, { "x":1646092800000, "y": [2359.550049,2688,2180,2634.750000] } ] # 处理后的结果 result1 = [{"x": d["x"], "y": d["y"][:-2]} for d in data]
处理后输出:
[ {"x": 1640995200000, "y": [2365, 2567.300049]}, {"x": 1643673600000, "y": [2408, 2456.399902]}, {"x": 1646092800000, "y": [2359.550049, 2688]} ]
问题2:能否不使用任何循环,移除每个子列表中除第一个元素外的所有元素?
可以用map函数配合lambda表达式实现,无需写显式的for循环:
# 处理后的结果 result2 = list(map(lambda d: {"x": d["x"], "y": d["y"][0]}, data))
处理后输出(与期望一致):
[ {"x": 1640995200000, "y": 2365}, {"x": 1643673600000, "y": 2408}, {"x": 1646092800000, "y": 2359.550049} ]
map会隐式迭代处理列表中的每个字典,通过lambda生成只保留y第一个元素的新字典,最后转成列表即可。
内容的提问来源于stack exchange,提问作者Ujjal Modak
相关产品推荐
相关产品推荐

