Monday, April 29, 2019

Some code I'm playing around with

I'm getting some coding done and exploring Python... here is some sample code that I'm fiddling around with..

from __future__ import division

# list of users
users = [
 { "id": 0, "name": "Alex" },
 { "id": 1, "name": "Brian" },
 { "id": 2, "name": "Cathy" },
 { "id": 3, "name": "David" },
 { "id": 4, "name": "Erica" },
 { "id": 5, "name": "Frank" },
 { "id": 6, "name": "Gary" },
 { "id": 7, "name": "Hank" },
 { "id": 8, "name": "Indigo" },
 { "id": 9, "name": "Jason" }
]

# relationship of friendship between users
friendships = [(0,1), (0,2), (1,2), (1,3), (2,3), (3,4),
 (4,5), (5,6), (5,7), (6,8), (7,8), (8,9)]

# initialize empty array
for user in users:
 user["friends"] = []

# establish the frienships for each user
for i, j in friendships:
 # this works because users[i] is the user whose id is i
 users[i]["friends"].append(users[j])
 users[j]["friends"].append(users[i])

# this function simply returns the length of the array
def number_of_friends(user):
 """How many friends does _user_ have?"""
 return len(user["friends"])

# this sums up the total amount of connections
total_connections = sum(number_of_friends(user)
 for user in users)

print "Total connections are:", total_connections

# let's find the average
# from __future__ import division
num_users = len(users)
avg_connections = total_connections / num_users

print "Average amount of connections is:", avg_connections

# find the most connected people - largest number of friends

# create a list (user_id, number_of_friends)
num_friends_by_id = [(user["id"], number_of_friends(user))
 for user in users]

print "Unsorted list:", num_friends_by_id

print "Sorted list:", sorted(num_friends_by_id, key=lambda (user_id, num_friends): num_friends, reverse=True)