Search code examples
pythonpython-3.xsocial-networkingdictionary

Creating dictionaries of Friends that know other Friends in python


In any group of people there are many pairs of friends. Assume that two people who share a friend are friends themselves. (Yes, this is an unrealistic assumption in real life, but let's make it nevertheless). In other words, if people A and B are friends and B is friends with C, then A and C must also be friends. Using this rule we can partition any group of people into friendship circles as long as we know something about the friendships in the group.

Write a function networks() that takes two parameters. The first parameter is the number of people in the group and the second parameter is a list of tuple objects that define friends. Assume that people are identified by numbers 0 through n-1. For example, tuple (0, 2) says that person 0 is friends with person 2. The function should print the partition of people into friendship circles. The following shows several sample runs of the function:

>>>networks(5,[(0,1),(1,2),(3,4)])#execute

Social network 0 is {0,1,2}

Social Network 1 is {3,4}

I am honestly pretty lost on how to start this program, any tips would be greatly appreciated.


Solution

  • def networks(n,lst):
    groups= []
    for i in range(n)
        groups.append({i})
    for pair in lst:
        union = groups[pair[0]]|groups[pair[1]]
        for p in union:
            groups[p]=union
    sets= set()
    for g in groups:
        sets.add(tuple(g))
    i=0
    for s in sets:
        print("network",i,"is",set(s))
        i+=1
    

    This is what I was looking for if anybody cares.