【发布时间】:2021-03-25 03:19:33
【问题描述】:
我有一个这样的list
laptop_list = [
{"manufacturer_id": 1 , "manufacturer_name": "Lenovo", "model_number": 000000, "model_name": "Legion"},
{"manufacturer_id": 1 , "manufacturer_name": "Lenovo", "model_number": 999999, "model_name": "Ideapad"},
{"manufacturer_id": 2 , "manufacturer_name": "HP", "model_number": 0101010, "model_name": "pavillion"} ,
{"manufacturer_id": 2 , "manufacturer_name": "HP", "model_number": 0202020, "model_name": "Inspiron"} ]
我需要重新构造上面的列表,类似于
[{"manufacturer_id": 1 , "manufacturer_name": "Lenovo", "models":[{"model_number": 000000, "model_name": "Legion"}, {"model_number": 999999, "model_name": "Ideapad"}]},
{"manufacturer_id": 2 , "manufacturer_name": "HP", "models":[{"model_number": 0101010, "model_name": "pavillion"} , {"model_number": 0202020, "model_name": "Inspiron"}]} ]
我尝试使用 node 类,但无法达到预期的效果
class LaptopNode:
def __init__(self, manufacturer_id, manufacturer_name):
self.manufacturer_id = manufacturer_id
self.manufacturer_name = manufacturer_name
self.child_models = []
谁能提出一个有效的方法来实现这一点?
【问题讨论】:
-
您是否保证在输入中显示的列表中排序,这意味着
manufacturer_ids 至少分组为显示? -
高效是什么意思?您尝试过的方法失败的原因是什么?
-
是的。要么您将遍历并创建您的对象(使用字典以提高制造商 ID 的效率。)或者您将编写一个 groupby 函数或使用内置库。这个链接很有用stackoverflow.com/questions/3749512/python-group-by
-
@TomMyddeltyn 不,输入中没有排序。这将是随机的
-
前面有
0的model_numbers 会导致错误SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers?我可以删除0s
标签: python python-3.x list dictionary data-structures