[英]Add values of keys and sort it by occurrence of the keys in a list of dictionaries in Python
[英]Python: sort specific pairs of dictionaries in a list of dictionaries based on occurrence of value
例:
[{type:"fjsjo"}, {type:"cccc"}, {type:"xxxx"}, {type:"oooo"}]
結果是
[{type:"fjsjo"}, {type:"xxxx"}, {type:"cccc"}, {type:"oooo"}]
我總是需要“ xxxx”字典來出現在“ cccc”之前。 如何轉換字典,以便當它檢測到包含值“ 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"}]
我認為您的類型被引用並嘗試
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'}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.