Home > Enterprise >  find common values from json file
find common values from json file

Time:09-30

I'm trying to find users from a JSON file that have the same "p1" as the input user, and then return the names of all of them. I'm new to coding, sorry if this code looks bad

user1 refers to the input user

async def find_common_p1(user1):
    users = await get_json()
    for user in users:
        if users[str(user)]["p1"] == users[str(user1.id)]["p1"]:
            return users[str(user)]["name"]


async def get_json():
    with open("the json file", "r") as f:
        users = json.load(f)
    return users

Inside the json file looks like:

{"user_1_id": {"name": "user_1", "p1": False}, 
"user_2_id": {"name": "user_2", "p1": True}, 
"user_3_id": {"name": "user_3", "p1": True}}

CodePudding user response:

You are on the right track, your code:

async def find_common_p1(user1):
    users = await get_json()
    for user in users:
        if users[str(user)]["p1"] == users[str(user1.id)]["p1"]:
            return users[str(user)]["name"]

This will return the first user with a matching "p1". To return all users with a matching "p1" you have to remember all the users who match then return it at the end of the function. So like this

async def find_common_p1(user1):
    users = await get_json()
    users_with_matching_p1 = []
    for user in users:
        if users[str(user)]["p1"] == users[str(user1.id)]["p1"]:
            users_with_matching_p1.append(users[str(user)]["name"])
    
    return users_with_matching_p1
  • Related