簡體   English   中英

如何從這個元組列表中提取並轉換成這個字典?

[英]How to extract from this list of tuples and convert into this dictionary?

我有這個元組列表。

List = [('id1', 'name1', 'date1'), ('id1', 'name2', 'date2'), ('id2', 'name3', 'date3'), ('id2', 'name4', 'date4')]

我想要一個將list轉換為字典的函數

Dict = convert('id1', List)

Dict的內容是{'id1':('name1', 'name2')}

第一個參數根據第一個元素過濾出感興趣的元組。 它也是輸出字典的關鍵。 每個元組的第二個元素將成為輸出字典的值。

我在Python中編寫了一個小函數,它不起作用。 如果你有更好的建議,非常感謝你的幫助。 忘了我的功能,如果它太遠,我想是的。 以pythonic方式解決它是非常受歡迎的。 我使用的是Python 2.7

def convertToDict(key, List):
    for key in List[0]:
        DictOut = {key:[]}
        DictOut[key].append(List[0])

您無條件地替換DictOut 相反,你應該像這樣使用setdefault

DictOut.setdefault(key, [])

你的程序可以這樣寫

def convertToDict(my_list):
    result_dict = {}
    for item in my_list:
        result_dict.setdefault(item[0], []).append(item[1])
    return result_dict

print convertToDict(my_list)
# {'id2': ['name3', 'name4'], 'id1': ['name1', 'name2']}

如果您只想獲取特定鍵。 你可以用它

def convertToDict(key, my_list):
    result_dict = {}
    for item in my_list:
        if item[0] == key:
            result_dict.setdefault(item[0], []).append(item[1])
    return result_dict

print convertToDict("id1", my_list)
# {'id1': ['name1', 'name2']}

實際上,您可以將collections.defaultdict用於此目的

from collections import defaultdict
def convertToDict(key, my_list):
    result_dict = defaultdict(list)
    for item in my_list:
        if item[0] == key:
            result_dict[item[0]].append(item[1])
    return result_dict

print convertToDict("id1", my_list)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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