作为一个新手,我在Python中寻求一些帮助...
对于像Python列表中变量数量的字典:
list_dicts = [
{'id':'001', 'name':'jim', 'item':'pencil', 'price':'0.99'},
{'id':'002', 'name':'mary', 'item':'book', 'price':'15.49'},
{'id':'002', 'name':'mary', 'item':'tape', 'price':'7.99'},
{'id':'003', 'name':'john', 'item':'pen', 'price':'3.49'},
{'id':'003', 'name':'john', 'item':'stapler', 'price':'9.49'},
{'id':'003', 'name':'john', 'item':'scissors', 'price':'12.99'},
]
我正在尝试找到最佳的方法来分组字典,其中键" id "的值相等,然后添加/合并任何唯一的键:值,并创建一个新的字典列表,例如:
list_dicts2 = [
{'id':'001', 'name':'jim', 'item1':'pencil', 'price1':'0.99'},
{'id':'002', 'name':'mary', 'item1':'book', 'price1':'15.49', 'item2':'tape', 'price2':'7.99'},
{'id':'003', 'name':'john', 'item1':'pen', 'price1':'3.49', 'item2':'stapler', 'price2':'9.49', 'item3':'scissors', 'price3':'12.99'},
]
到目前为止,我已经弄清楚了如何使用以下方式将列表中的字典分组:
myList = itertools.groupby(list_dicts, operator.itemgetter('id'))
但我不知道如何构建新的字典列表以:
1)将额外的键和值添加到具有相同“id”的第一个字典实例中
2)设置“item”和“price”键的新名称(例如“item1”,“item2”,“item3”)。这对我来说似乎很笨拙,是否有更好的方法?
3)循环每个“id”匹配以建立稍后输出的字符串
我选择返回一个新的字典列表,仅因为传递字典到模板函数是方便的,通过描述性键设置变量是有帮助的(有许多变量)。如果有更干净、更简洁的方法来完成这个任务,我很想学习。再一次,我对Python和处理像这样的数据结构相当陌生。