簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM