Advertisement
pacho_the_python

Naughty or Nice

Jun 8th, 2022
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. from collections import deque
  2.  
  3.  
  4. def naughty_or_nice_list(santa_list, *args, **kwargs):
  5.     nice_not_nice = {"Nice": [], "Naughty": [], "Not found": []}
  6.     legenda_dict = {}
  7.     queue_data = deque(args)
  8.     while queue_data:
  9.         data = queue_data.popleft()
  10.         number = int(data.split("-")[0])
  11.         state = data.split("-")[1]
  12.         legenda_dict[number] = state
  13.  
  14.     kid_stat = {}
  15.     for i in santa_list:
  16.         num = i[0]
  17.         name = i[1]
  18.         if num not in kid_stat:
  19.             kid_stat[num] = [name]
  20.         else:
  21.             kid_stat[num].append(name)
  22.  
  23.     double_key_list = []
  24.     for key in kid_stat:
  25.         if len(kid_stat[key]) == 1:
  26.             if key in legenda_dict:
  27.                 main_key = legenda_dict[key]
  28.                 nice_not_nice[main_key].append(kid_stat[key][0])
  29.             else:
  30.                 nice_not_nice["Not found"].append(kid_stat[key][0])
  31.         elif len(kid_stat[key]) >= 2:
  32.             double_key_list.extend(kid_stat[key])
  33.  
  34.     for i in kwargs:
  35.         if i in double_key_list:
  36.             kid_condition = kwargs[i]
  37.             nice_not_nice[kid_condition].append(i)
  38.  
  39.     print_result = []
  40.     for i, j in nice_not_nice.items():
  41.         if len(j) > 0:
  42.             result = f"{i}: {', '.join(j)}"
  43.             print_result.append(result)
  44.     return "\n".join(print_result)
  45.  
  46.  
  47. print(naughty_or_nice_list(
  48.     [
  49.         (7, "Peter"),
  50.         (1, "Lilly"),
  51.         (2, "Peter"),
  52.         (12, "Peter"),
  53.         (3, "Simon"),
  54.     ],
  55.     "3-Nice",
  56.     "5-Naughty",
  57.     "2-Nice",
  58.     "1-Nice",
  59.     ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement