1

我想获取一个字典列表并以特定格式创建一个新的排列列表。

例如,我在下面有一个包含字典的列表。我想以特定格式使用这些项目创建所有可能的列表:(例如 result=[A 类型的字典,B 类型的字典,B 类型的字典,C 类型的字典,C 类型的字典,D 类型的字典, 类型 E 的字典, 类型 F 的字典]) 其中 B 类型的两项不能相等,C 类型的两项不能相等。我将处理大量项目,因此有关如何更有效地处理排列的任何提示都会有所帮助。

{'Items':[
{'Name':'name10','Type':'A','measure1':20,'measure2':20},
{'Name':'name20','Type':'A','measure1':25,'measure2':30},
{'Name':'name30','Type':'B','measure1':15,'measure2':40},
{'Name':'name40','Type':'B','measure1':20,'measure2':50},
{'Name':'name50','Type':'B','measure1':25,'measure2':60},
{'Name':'name60','Type':'C','measure1':15,'measure2':70},
{'Name':'name70','Type':'C','measure1':20,'measure2':80},
{'Name':'name80','Type':'C','measure1':25,'measure2':90},
{'Name':'name90','Type':'D','measure1':10,'measure2':30},
{'Name':'name85','Type':'D','measure1':15,'measure2':30},
{'Name':'name75','Type':'E','measure1':53,'measure2':30},
{'Name':'name65','Type':'E','measure1':10,'measure2':30},
{'Name':'name55','Type':'F','measure1':56,'measure2':10},
{'Name':'name45','Type':'F','measure1':10,'measure2':20}
]}
4

1 回答 1

0

假设您的 Items 字典在变量中x

x_set = set((i['Name'], i['Type'], i['measure1'], i['measure2']) for i in x['Items'])
items = [{'Name': i[0], 'Type': i[1], 'measure1': i[2], 'measure2': i[3]} for i in sorted(x_set)]
new_x = {'Items': items}

简单地使用字典的 set() 会很好,但这在 Python 中是不可能的。字典必须被解包成元组,然后重新打包成字典。

要处理大量项目,请考虑根据名称或类型将它们分成“碎片”。

于 2013-08-15T21:17:08.910 回答