字典中元组对的列表

2024-06-28 20:00:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中的字典有问题。我意识到这项任务很简单,但我却无法理解。我的任务是编写一个函数,它将元组列表转换为字典,字典的键代表人员(从元组中)并且值代表他们的朋友。每经验:

pairs_of_people = {("Adam", "Brian"), ("Adam", "Gabe"), ("Adam", "Hagan"),
    ("Brian", "Calvin"), ("Brian", "Hagan"),
    ("Calvin", "Dan")}`

必须返回:

^{pr2}$

有什么帮助吗?谢谢您。如果某人在某个地方有一个好的字典介绍,那将是非常感激的。我只是搞不清。


Tags: of函数列表字典人员朋友代表经验
2条回答

使用defaultdict是一种非常快速的暴力破解方法。 如果“person”或“friend”是必需的键(输入元组中的第一个人),那么这将在输出字典中添加people及其朋友。在

from collections import defaultdict

pairs_of_people = {("Adam", "Brian"), ("Adam", "Gabe"), ("Adam", "Hagan"),
               ("Brian", "Calvin"), ("Brian", "Hagan"),
               ("Calvin", "Dan")}

required_keys = {t[0] for t in pairs_of_people}

out = defaultdict(set)

for person, friend in pairs_of_people:
    if person in required_keys:
        out[person].add(friend)
    if friend in required_keys:
        out[friend].add(person)

print(out)
>> {"Adam": {"Brian", "Gabe", "Hagan"}, "Brian": {"Adam", "Hagan", "Calvin"},
    "Calvin": {"Brian", "Dan"}}

构造包含sets(显然)的dict要容易得多,方法是使用一个带有set^{}作为默认工厂:

from collections import defaultdict

d = defaultdict(set) 

另外,请使用names的辅助set,它包含每个元组的名字。这样您可以检查成员资格,如果两对是names集中的名称,它们将被添加到其他结果集中:

^{pr2}$

defaultdict只是一种特殊的dict,它使这些任务不那么乏味。现在,d包含:

print(d)
{'Brian': {'Hagan', 'Adam', 'Calvin'}, 'Adam': {'Hagan', 'Brian', 'Gabe'}, 'Calvin': {'Brian', 'Dan'}}

由于元组包含在一个集合中,所以除非将它们移到一个列表中,然后对它们进行排序,否则就无法进行预定的排序。您还可以将defaultdict更改为默认工厂列表为d = defaultdict(list),并使用d[i].append(j)和{},而不是{}。在

至于字典的介绍,你可以看看Python Tutorial的字典部分。在

相关问题 更多 >