用python中的列表替换值

时间:2016-04-13 18:52:10

标签: python list dictionary adjacency-list adjacency-matrix

我创建了一份员工和过去公司的词典:

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

现在,我希望将每个列表中的每个公司替换为在该公司工作过的人员列表。

我希望最终的结果是一个邻接列表(即一个人与人同时作为关键词和价值观的词典。

2 个答案:

答案 0 :(得分:0)

您需要循环浏览地图并创建另一张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]

答案 1 :(得分:0)

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

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

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

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