[英]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.