用 python 中的列表替换值

Replace values with lists in python

我创建了一个员工和过去公司的字典:

{person 1: [company 2, company 3], person 2: [company 2]}

现在,我想用在该公司工作过的人员列表替换每个列表中的每个公司。

我希望最终结果是一个邻接列表(即以人为键和值的字典。

您需要遍历您的地图并创建 company: people 的另一张地图,然后使用该地图生成 people: people

的第三张地图
pc_map = # your person: company map
cp_map = {}
for person, companies in pc_map.items():
    for company in companies:
        cp_map.setdefault(company, []).append(person)

pp_map = {}
for person, companies in pc_map.items():
    pp_map[person] = [cp_map[company] for company in companies]

这是假设的还是具体的例子?因为实现相同效果的最佳方法是拥有一个 Company 对象,该对象将为其工作的人员列表存储为一个字段。

class Company:
    __init__(self):
        self.employees = []

company1 = Company()
company1.employees.append("person1")
company1.employees.append("person2") #OR
company1.employees = ["person1","person2"]

这将允许邻接矩阵抽象(只需访问 company1.employees),同时仍然相当干净。