给定的是输入列表,其中包含字典
Input=[
{"rbd":"x","cat":"xxx","origin":"us"},
{"rbd":"y","cat":"xxx","origin":"us"},
{"rbd":"z","cat":"xxx","origin":"us"},
{"rbd":"q","cat":"xxx","origin":"us"},
{"rbd":"1","cat":"xxy","origin":"us"},
{"rbd":"2","cat":"xxy","origin":"us"}
]
我试图把它作为一个输出。 这里,如果输入列表中的字典的键“cat”和键“origin”相同,那么它会将它们添加到一个“rbd”中。否则它将创建一个新的。下面是输出
Output=[{"rbd":["x","y","z","q"],"cat":"xxx","origin":"us"},
{"rbd":["l","2"],"cat":"xxy","origin":"us"}]
我尝试了以下不完整的实现。首先将列表转换为字典。它抛出了一个错误
def Convert(lst):
Input_Dict = {lst[i]: lst[i + 1] for i in range(0, len(lst), 2)}
return Input_Dict
解决此问题的一种方法是通过来自collections模块的defaultdict:
您应该循环输入,并为每个元素检查输出中是否存在cat和原点。如果已经存在,则将输入的
rbd
放在输出中。如果不存在,请在输出中创建一个新映射请注意,这不是最有效的答案
试试
itertools.groupby
:这给了我:
相关问题 更多 >
编程相关推荐