Top.Mail.Ru
Ответы

Ошибка в 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 и много чего еще