Ошибка в python
вот код
1234567891011121314151617181920212223242526272829303132333435363738
users=[
{"id": 0, "name": "Hero"},
{"id": 1, "name": "Dunn"},
{"id": 2, "name": "Sue"},
{"id": 3, "name": "Chi"},
{"id": 4, "name": "Thor"},
{"id": 5, "name": "Clive"},
{"id": 6, "name": "Hicks"},
{"id": 7, "name": "Devin"},
{"id": 8, "name": "Kate"},
{"id": 9, "name": "Klein"},
]
friendship=[ (0,1), (0,2), (1,2), (1,3), (2,3), (3,4),
(4,5), (5,6), (5,7), (7,8), (6,8), (8,9)]
friendships={user["id"]: [] for user in users}
for i, j in friendships:
friendship[i].append(j)
friendships[j].append(i)
def number_of_friends(user):
user_id=user["id"]
friend_ids=friendships[user_id]
return len(friend_ids)
total_conn=sum(number_of_friends(user) for user in users)
num_users=len(users)
avg_conn=total_conn/num_users
num_friends_by_id=[(user["id"], number_of_friends(user))for user in users]
num_friends_by_id.sort(key=lambda id_and_friends: id_and_friends[1], reverse=True)
def floaf_ids_bad(user):
return [floaf_id
for friend_id in friendships[user["id"]]
for foaf_id in friendships[friend_id]]
return [foaf["id"]
for friend in user["friends"]
for foaf in friend["friends"]]
print(friendships[0])
print(friendships[1])
print(friendships[2])
вот ошибка
1234
File "D:\IVAN_\photo.py", line 17, in <module>
for (i, j) in friendships:
^^^^^^
TypeError: cannot unpack non-iterable int object
По дате
По рейтингу
У тебя ошибка в строке: for i, j in friendships:.
Ты пытаешься итерироваться по словарю friendships, который состоит из ключей и пустых списков, при этом ты пытаешься развернуть ключи словаря в пары i, j, что не имеет смысла, потому что ключи словаря не являются парами)
Тебе следует итерироваться по списку friendship, в котором действительно содержатся пары (i, j)
Должно быть примерно так:
123456789101112131415161718192021222324252627282930313233343536
users = [
{"id": 0, "name": "Hero"},
{"id": 1, "name": "Dunn"},
{"id": 2, "name": "Sue"},
{"id": 3, "name": "Chi"},
{"id": 4, "name": "Thor"},
{"id": 5, "name": "Clive"},
{"id": 6, "name": "Hicks"},
{"id": 7, "name": "Devin"},
{"id": 8, "name": "Kate"},
{"id": 9, "name": "Klein"},
]
friendship = [(0,1), (0,2), (1,2), (1,3), (2,3), (3,4),
(4,5), (5,6), (5,7), (7,8), (6,8), (8,9)]
friendships = {user["id"]: [] for user in users}
for i, j in friendship:
friendships[i].append(j)
friendships[j].append(i)
def number_of_friends(user):
user_id = user["id"]
friend_ids = friendships[user_id]
return len(friend_ids)
total_conn = sum(number_of_friends(user) for user in users)
num_users = len(users)
avg_conn = total_conn / num_users
num_friends_by_id = [(user["id"], number_of_friends(user)) for user in users]
num_friends_by_id.sort(key=lambda id_and_friends: id_and_friends[1], reverse=True)
print(friendships[0])
print(friendships[1])
print(friendships[2])
Ответ будет таким
[1, 2]
[0, 2, 3]
[0, 1, 3]
Перепутаны названия переменных friendship и frienships. То же самое с user и users. Также в функции происходит возврат после return и много чего еще
Больше по теме