簡體   English   中英

將python中的元組列表轉換為字典

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

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