Table of contents
Recapitulare 3
Caractere duplicate
Dat fiind un șir de caractere, găsiți toate caracterele duplicate.
Exemplu 1:
Input : hello
Output : l
Exemplu 2:
Input : geeksforgeeeks
Output : e g k s
Cheia cu cele mai multe valori unice
Având un dicționar cu o listă de valori, extragți cheia a cărei valoare are cele mai multe valori unice.
Exemplu 1:
Input : test_dict = {"Gfg" : [5, 7, 9, 4, 0], "is" : [6, 7, 4, 3, 3], "Best" : [9, 9, 6, 5, 5]}
Output : "Gfg"
Explanation : "Gfg" are 5 elemente unice
Exemplu 2:
Input : test_dict = {"Gfg" : [5, 7, 7, 7, 7], "is" : [6, 7, 7, 7], "Best" : [9, 9, 6, 5, 5]}
Output : "Best"
Explanation : 3 (max) elemente unice: 9, 6, 5 ale cheii "Best".
Prelucrarea datelor în format CSV
Scrieți un program Python care să citească date dintr-un fișier CSV într-un dicționar Python și să efectueze câteva operații cu acele date. Puteți utiliza biblioteca csv din Python pentru a facilita citirea din fișierul CSV.
Fișierul CSV are următoarea structură
NUME,Prenume,ID Student,Punctaj Tema,Data Submisie
POPESCU,Ionel,ionel.popescu,80,2023-12-14
PERFECT,Student,student.perfect,100,2023-12-04
IONESCU,Maria,student.perfect,100,2023-12-07
STOICA,Ioana,student.perfect,100,2023-12-05
POPA,Andrei,student.perfect,30,2023-12-10
STOIAN,Grigore,student.perfect,100,2023-12-15
Data submisiei este de forma yyyy-mm-dd. Astfel, data 2023-12-14 înseamnă 14 Decembrie 2023.
Cernițe:
- Citiți fișierul CSV și creați un dicționar care reține informațiile pentru fiecare student din fișierul CSV. Cheia dicționarului va fi
ID Studentiar valoarea va fi un obiect care conține câmpurile:nume_complet(obținut prin operațiaprenume + nume),punctaj_tema,data_submisie,punctaj_final. - Deadline-ul temei a fost pe data de 7 Dec 2023 (
2023-12-07). Dacă un student a trimis o temă mai devreme de deadline, primește 10 puncte bonus pentru fiecare zi. Dacă un student a trimis tema după deadline, primește o depunctare de 10 puncte pentru fiecare zi de întârziere. Calculați în câmpulpunctaj_finalpunctajul obținut de către fiecare student pentru tema sa. - Ajustați punctajul final ar fiecărui student ținând cont de următoarea regulă: un student nu poate obține punctaj negativ pentru temă, punctajul minim fiind 0.
- Ajustați punctajul final ar fiecărui student ținând cont de următoarea regulă: se pot acorda maxim 30 de puncte bonus.
- Ajustați punctajul final ar fiecărui student ținând cont de următoarea regulă: deadline-ul hard a fost pe data de 14 Dec 2023 (
2023-12-14); orice temă trimisă după această dată are punctajul 0.
Rezultatele prelucrării, după fiecare subpunct, trebuie scrise într-un fișier, în format JSON.
Exemplu citire fișier CSV
import csv
def read_csv_to_dictionary(file_path):
"""
Citeste datele dintr-un fișier CSV într-un dicționar Python.
"""
data_dictionary = {}
try:
with open(file_path, 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
for row in csv_reader:
# Assume the CSV file has columns 'key' and 'value'
key = row['key']
value = row['value']
# Add key-value pair to the dictionary
data_dictionary[key] = value
except FileNotFoundError:
print(f"Fisierul CSV {file_path} nu a fost gasit.")
except Exception as e:
print(f"O eroare a aparut: {e}")
return data_dictionary
Exemplu scriere fișier JSON
import json
# Scrie dicționarul în fișierul JSON
with open(file_path, 'w') as json_file:
json.dump(my_dict, json_file, indent=4)