示例:
[{type:"fjsjo"}, {type:"cccc"}, {type:"xxxx"}, {type:"oooo"}]
结果
[{type:"fjsjo"}, {type:"xxxx"}, {type:"cccc"}, {type:"oooo"}]
我总是需要在“cccc”之前找到“xxxx”字典。如何转换字典,以便当它检测到包含值“cccc”和“xxxx”的字典出现时彼此相邻或者可能在这两者之间有另一个字典时,可以转换为“xxxx”始终领先于“cccc”?
示例:
[{type:"fjsjo"}, {type:"cccc"}, {type:"oooo"} , {type:"xxxx"}, {type:"oooo"}]
结果
[{type:"fjsjo"}, {type:"xxxx"}, {type:"oooo"} , {type:"cccc"}, {type:"oooo"}]
此外,如果有两个集合或多个相同类型的集合,则应始终对最靠近左侧的字典进行排序。
所以
示例:
[{type:"cccc"}, {type:"xxxx"} , {type:"cccc"}, {type:"xxxx"}]
结果
[{type:"xxxx"}, {type:"cccc"} , {type:"xxxx"}, {type:"cccc"}]
每当“cccc”出现在“xxxx”之前时,这两个词典必须切换位置。如果他们已经换了位置,那么他们就不能再换了。所以中间的两个词典不会切换。
示例:
[{type:"cccc"}, {type:"xxxx"} , {type:"cccc"}]
结果
[{type:"xxxx"}, {type:"cccc"} , {type:"cccc"}]
示例:
[{type:"cccc"}, {type:"oooo"} , {type:"xxxx"}, {type:"cccc"},{type:"xxxx"}]
结果
[{type:"xxxx"}, {type:"oooo"} , {type:"cccc"}, {type:"xxxx"},{type:"cccc"},{type:"cccc"}]
答案 0 :(得分:1)
我认为你的类型被引用并试试这个
a=[{'type':"cccc"}, {'type':"oooo"} , {'type':"xxxx"}, {'type':"cccc"},{'type':"xxxx"}]
xxlist=[]
for index,dix in enumerate(a):
if dix['type']=='xxxx':
xxlist.append(a.pop(index))
new=[]
for i in a:
if i['type']=='cccc':
new.append(xxlist.pop(0))
new.append(i)
else:
new.append(i)
if len(xxlist)>0:
for i in xxlist:
new.append(i)
print new
[{'type': 'xxxx'}, {'type': 'cccc'}, {'type': 'oooo'}, {'type': 'xxxx'}, {'type': 'cccc'}]