【问题标题】:Converting list of tuples in python to dictionary将python中的元组列表转换为字典
【发布时间】:2013-11-08 18:56:13
【问题描述】:

想象一个允许人们指定他们喜欢的其他人的社交网络网站。

我们可以将谁喜欢谁的信息存储在一个元组列表中,例如分配给的那个

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),它将元组列表作为 它的参数(采用上述格式)并返回一个字典作为其结果。输出字典有键的字符串(表示人名)和值的字符串列表(表示人名的列表)。

字典中的每个人都与所有且只有他们喜欢的人的列表相关联。例如,当应用于好友列表时,该函数的行为应该是这样的:

 likes_relation(friendface)
    { 'Aphrodite': ['Apollo', 'Zeus', 'Athena'],
    'Hera': ['Aphrodite'],
    'Zeus': ['Apollo', 'Aphrodite', 'Athena', 'Hera'],
    'Apollo': ['Aphrodite'],
    'Athena': ['Hera', 'Aphrodite'] }

抱歉,它应该是从示例考试问题列表中添加的,但没有给出答案。 我做到了: def likes_relations(网络):
喜欢 = {} 对于网络中的 k、v:

比我有点失落,因为它不像我们在课堂上做的任何例子

【问题讨论】:

  • 嗨@user2851268 你有没有尝试过没有字的东西?
  • 现在真的没有心情去执行你的整个任务。您能否至少向我们展示一下您尝试了什么,您遇到了困难吗?

标签: python dictionary


【解决方案1】:

使用defaultdict(list)dict.setdefault(..., []) - 在性能或可读性方面没有太大区别,所以这真的是一个品味问题。我更喜欢使用setdefault:

likes = {}
for k, v in friendface:
    likes.setdefault(k, []).append(v)

【讨论】:

    【解决方案2】:

    这是使用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']
    

    希望这会有所帮助!

    【讨论】:

    • 我认为你的意思是 defaultdict(list) - tuples 是不可变的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2017-01-20
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多