0

私のハードウェア割り当ての一部では、キーが1111、3333などの数字の文字列であり、定義も数字の文字列である辞書を取得する関数を記述し、どのキーが最も多くの定義を持っているかを確認する必要があります。一般。私はこれが辞書をループすることによって行われる必要があると仮定しています、そしてこれは私がこれまでに持っているコードです:

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は辞書です。なぜそれが機能しないのか、そして何が間違っているのか疑問に思っています。どんな助けでもいただければ幸いです。ありがとうございました。

4

1 に答える 1

1

ユーザー ID で指定された特定のユーザーと共通の友達が最も多いユーザーを見つけるには、次のようにします。

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)

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
于 2012-11-10T09:52:19.203 に答える