Найти - Пользователи
Полная версия: Словари и списки - социальная сеть
Начало » Python для новичков » Словари и списки - социальная сеть
1
Victor_M
Неделю как занимаюсь с Питоном.

Задание: Используя списки и словари установить взаимосвязи пользователей некой соц.сети.
С помощью функции найти имена друзей, например “Кати”
(точнее: окружение её контактов - с кем она и кто с ней дружат).

С ходу набросал вот:

 friendships = {
    'Алексей': ['Александр', 'Петр'], 
    'Александр': [], 
    'Петр': ['Александр', 'Катя'], 
    'Катя': ['Александр', 'Владимир'],
    'Владимир': ['Аня'],
    'Аня':['Катя']}
x = []
for dic in friendships:
    for key, value in friendships.items():
        if value == ['Катя']:
            x.append(key)
            break
print(x)

Дальше не понимаю как идти (исправить) и где бы тут “замутить” функцию.
py.user.next
Victor_M
Дальше не понимаю как идти (исправить) и где бы тут “замутить” функцию.
Надо создать функцию найти_друзей() , у которой два аргумента: первый аргумент - словарь соцсети; второй аргумент - человек. Функция возвращает список людей. Дальше надо разрабатывать функцию.

Сделай заглушку в таком виде и отладь её.
  
>>> def find_friends(social_network, person):
...     return ['one', 'two', 'three']
... 
>>> find_friends({'a': ['a1', 'a2'], 'b': ['b1', 'b2']}, 'a')
['one', 'two', 'three']
>>>
Убедись, что заглушка запускается, всё принимает правильно и всё возвращает правильно.
После этого можно заполнять функцию инструкциями, которые приведут её из точки A в точку B.

Victor_M
С ходу набросал вот:
Это не работает. Чтобы проверить имя в списке, используй операцию in (link).
  
>>> 'one' in ['one', 'two', 'three']
True
>>> 'four' in ['one', 'two', 'three']
False
>>>
Victor_M
Спасибо, пришлось покопаться …
Сделал так (кажется работает).
 friendships = {
    'Алексей': ['Александр', 'Петр'],
    'Александр': [],
    'Петр': ['Александр', 'Катя'],
    'Катя': ['Александр', 'Владимир'],
    'Владимир': ['Аня'],
    'Аня': ['Катя']}
x = []
for key, value in friendships.items():
    if key == 'Катя':
        x.extend(value)
    elif 'Катя' in value:
        x.append(key)
print(x)
py.user.next
Victor_M
Сделал так (кажется работает).
Оно работает, но ищет только для Катя. Если надо будет искать для Владимир, то надо будет весь код переписывать. Поэтому и надо сделать функцию, которая принимает словарь и имя, а возвращает список друзей для имени.
Victor_M
Спасибо, попробую доработать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB