首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字典循环hw - Python

字典循环hw - Python
EN

Stack Overflow用户
提问于 2012-11-10 12:36:02
回答 1查看 75关注 0票数 0

我的硬件赋值的一部分要求我编写一个函数,该函数获取一个字典,其中键是数字字符串,例如1111,3333等,定义也是数字字符串,并检查哪些键具有最多的共同定义。我假设这需要通过遍历字典来完成,这是我到目前为止拥有的代码:

代码语言:javascript
运行
复制
def most_friends_common(id, all_users):
    frds_common = 0
    friends_of_id = set()
    friends_of_key = set()
    friends_list = []
    print "Most friends in common:"
    for friends in all_users(id):
        friends_of_id = friends_of_id.add(friends)
    for key in all_users:
        for value in key:
            friends_of_key = friends_of_key.add(value)
            if len(friends_of_key & friends_of_id) >= frds_common:
                frds_common = len(friends_of_key & friends_of_id)
                friends_list.append(value)
    print "%s: %s" %(id, str(friends_list))

id是任意4位数字的字符串,all_users是字典。我只是想知道为什么它不工作,我做错了什么。任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-11-10 17:52:19

要查找与用户id指定的给定用户具有最多共同好友的用户,请执行以下操作:

代码语言:javascript
运行
复制
def most_friends_common(user_id, all_users):
    def nfriends_common(id, friends=set(all_users[user_id])):
        return len(friends.intersection(all_users[id])) if id != user_id else -1
    return max(all_users, key=nfriends_common)

Example

代码语言:javascript
运行
复制
print(most_friends_common('4444', {
            '1111': ['2222', '3333'], # 1111 has 2222, 3333 friends
            '2222': ['1111'],
            '3333': ['1111', '4444', '5555'],
            '4444': ['1111', '2222', '3333'],
            '5555': []}))
# -> 1111
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13319280

复制
相关文章

相似问题

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