首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中组合2个键相同但值不同的字典

在Python中组合2个键相同但值不同的字典
EN

Stack Overflow用户
提问于 2019-02-28 04:52:11
回答 1查看 71关注 0票数 0

我有这两个字典,一个代表人们的I和他们朋友的I:

代码语言:javascript
复制
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]}

另一个是根据共同兴趣(在前面的代码中找到)显示他们应该成为好友的in:

代码语言:javascript
复制
       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的条目为:

代码语言:javascript
复制
{0: ([1, 2, 3, 5, 8, 9], ['C', 'Java', 'Data', 'Rainbows'],
{1: ([0, 2, 3, 4], ['C']),
...

我正在努力确定从哪里开始。我认为我可以只使用.update或类似的东西,但我不确定,因为一个字典有一个元组,而另一个没有。如果你可以帮助它,请不要使用像defaultdict这样的东西来回复,我是一个学生,我正在努力学习如何尽可能地像香草一样做这件事。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-28 05:06:16

尝试将问题分解成小块,然后将它们粘合在一起。这里有一个解决你的问题的简单方法:

代码语言:javascript
复制
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,并与兴趣一起放入元组中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54914281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档