[英]Converting list of tuples in python to dictionary
想象一下一個社交網絡網站,該網站允許人們指定自己喜歡的其他人。
我們可以在一個元組列表中存儲有關誰喜歡誰的信息,例如分配給
friendface below:
friendface = [
(’Zeus’,’Apollo’),
(’Zeus’,’Aphrodite’),
(’Apollo’,’Aphrodite’),
(’Athena’,’Hera’),
(’Hera’,’Aphrodite’),
(’Aphrodite’,’Apollo’),
(’Aphrodite’,’Zeus’),
(’Athena’,’Aphrodite’),
(’Aphrodite’,’Athena’),
(’Zeus’,’Athena’),
(’Zeus’,’Hera’),
編寫Python函數likes_relation(network),該函數將元組列表作為參數(采用上述格式),然后返回字典作為結果。 outputdictionary具有用於鍵的字符串(代表人物名稱)和用於值的字符串列表(代表人物名稱列表)。
詞典中的每個人都與他們所喜歡的所有人的列表相關聯。 例如,將該函數應用於好友列表時,其行為應如下所示:
likes_relation(friendface)
{ 'Aphrodite': ['Apollo', 'Zeus', 'Athena'],
'Hera': ['Aphrodite'],
'Zeus': ['Apollo', 'Aphrodite', 'Athena', 'Hera'],
'Apollo': ['Aphrodite'],
'Athena': ['Hera', 'Aphrodite'] }
抱歉,應從示例考試問題列表中添加,但未給出答案。 我得到了:def likes_relations(network):
對於網絡中的k,v,喜歡= {}:
之后,我有點迷茫,因為它不像我們在課堂上做過的任何例子
使用defaultdict(list)
或dict.setdefault(..., [])
-性能或可讀性沒有太大差異,因此這實際上是一個問題。 我更喜歡使用setdefault
:
likes = {}
for k, v in friendface:
likes.setdefault(k, []).append(v)
這是使用defaultdict
的解決方案:
def likes_relation(friendface):
d = defaultdict(list)
for k, v in friendface:
d[k].append(v)
return d
結果:
>>> for k,v in likes_relation(f).items():
print (k, v)
Hera ['Aphrodite']
Apollo ['Aphrodite']
Aphrodite ['Apollo', 'Zeus', 'Athena']
Zeus ['Apollo', 'Aphrodite', 'Athena', 'Hera']
Athena ['Hera', 'Aphrodite']
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.