我有兩個列表。我的第一個列表first_list_ordered
包含字符串。按照第二個有序列表中鍵的外觀對詞典列表進行排序
first_list_ordered = ["id1", "id2", "id3", "id4", "id5", "id6", "id7"]
我的第二個列表second_list_unsorted
包含稱爲id
至少一個鍵,其中的值可能出現在first_list_ordered
字典。現在
second_list_unordered = [{"id": "id6", "content": "sth"},
{"id": "id4", "content": "sth"},
{"id": "id1", "content": "sth"},
{"id": "id3", "content": "sth"}]
我想排序id
的第一個列表值的出現順序的第二個列表。 結果應該是這樣的:
result = [{"id": "id1", "content": "sth"},
{"id": "id3", "content": "sth"},
{"id": "id4", "content": "sth"},
{"id": "id6", "content": "sth"}]
因此,如果您創建的所有值second_list_unordered
每一個快譯通,你得到的first_list_ordered
一個無序的子集中的id
的列表。
我的辦法是這樣的:
>>> first_list_ordered = ["id1", "id2", "id3", "id4", "id5", "id6", "id7"]
>>> second_list_unordered = [{"id": "id6", "content": "sth"}, {"id": "id4", "content": "sth"}, {"id": "id1", "content": "sth"}, {"id": "id3", "content": "sth"}]
>>> indices = {c: i for i, c in enumerate(first_list_ordered)}
>>> result = sorted(second_list_unordered, key=indices.get)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
顯然它不工作的方式......現在我卡住了。
感謝您的任何提示!
MERCI!按預期工作! :) – hampfes 2014-10-02 16:29:13