将2个字典与相同的键相结合,但在Python中的值不同



我有这两个ditonaries,一个代表人的身份证和朋友的朋友的ID:

FOFDict = {0 : [1, 2, 3],
       1 : [2, 3, 4],
       2 : [0, 1, 3, 4],
       3 : [0, 1, 2, 5],
       4 : [1, 2, 6, 7],
       5 : [8, 3],
       6 : [9, 4, 7],
       7 : [9, 4, 6],
       8 : [5],
       9 : [6, 7]}

另一个显示了他们应该与谁成为朋友的身份证,以共同的兴趣(在代码之前找到):

       InterestFriendsDict = {0 : ([1, 5, 8, 9], ['C', 'Java','Data','Rainbows']),
       1 : ([0], ['C']),
       2 : ([3, 5], ['Python']),
       3 : ([2, 4, 5, 6], ['Python','ramen','R','stats','prob']),
       4 : ([3, 7], ['ramen','AI']),
       5 : ([0, 2, 3, 8], ['Java', 'Python', 'R']),
       6 : ([3], ['stats', 'prob']),
       7 : ([4, 8], ['AI', 'anatomy']),
       8 : ([0, 7, 9], ['Data', 'anatomy']),
       9 : ([0, 5, 8], ['Java', 'Data', 'Rainbows'])}

我现在必须以一种显示关键ID的方式将这些词典结合在一起,然后他们应该与之成为朋友的朋友和朋友的朋友,然后是所有人的共同利益。例如,ID 0和1的条目是:

{0: ([1, 2, 3, 5, 8, 9], ['C', 'Java', 'Data', 'Rainbows'],
{1: ([0, 2, 3, 4], ['C']),
...

我正在努力确定从哪里开始。我以为我可以只使用.update或类似的东西,但是我不确定是因为一个词典有一个元组,而另一个词则没有。如果您可以提供帮助,请在不使用违约之类的情况下做出回应,我是一名学生,我正在尝试学习如何尽可能地做到这一点。谢谢!

尝试将问题分成小块,然后将它们粘合在一起。这是攻击您问题的简单方法:

new_dict = {}
# iterate over dictionary by calling items()
for key, val in InterestFriendsDict.items():
    # unpack the tuple you have with 2 variables just like the size of the tuple
    id_tup, interests = val
    new_dict[key] = (list(set(FOFDict[key] + id_tup)), interests)

所以要注意几件事,set具有唯一的值,因此它可以快速处理重复。然后将其转换回list,并与兴趣一起放置在元组中。

相关内容

最新更新