我的部分hw作业要求我编写一个函数,它带有一个字符,其中键是数字串,如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是字典。 我只是想知道为什么它不起作用以及我做错了什么。 任何帮助,将不胜感激。谢谢。
答案 0 :(得分: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