Python Kontaktdaten mit JSON Ordnen

Aufrufe: 580     Aktiv: 30.10.2021 um 22:52

0

Hallo, ich bin nicht in der Lage dieses Beispiel zu schaffen.

Ich Versuche mein Beispiel zu lösen aber ich schaffe es einfach nicht. Ich finde im Internet keine Infos wie ich json files mit eq oder hash oder beides Vergleichen kann. vname kann ich nicht mit vname vergleichen nur womit soll ich das dann vergleichen. Ich verstehe es nicht.

Angabe

import json

class Person(): def init(self, name, lname, city, postCode): self.name = name self.lname = lname self.city = city self.postCode = postCode

def __repr__(self):
    return f'{self.name}'

def __eq__(self, other):
    return self.name == other.name and self.lname == other.lname  and self.city==other.city and self.postCode == other.postCode     #False oder True

def __hash__(self):
    return hash(('name', self.name, 'lname', self.lname, 'city', self.city, 'postCode', self.postCode))

def __str__(self):
    return f'Name: {self.name}, Nachname: {self.lname}, PLZ: {self.postCode}, City: {self.city}'

def main(): pListe = [] pDouble = []

#JSON Datei öffnen und Personen einlesen und daraus Objekte der KLasse Person erstellen; alle Objekte in Liste speichern
with open(file='people.json', mode='r', encoding='utf-8') as jsonFile:
    data = json.load(jsonFile)

    Anzahl = (len(data['people']))

    print(f'Anzahl d. eingelesenen Personen: {Anzahl}')

    for p in data['people']:
        #print(p, type(p))
        #if p['v_name'] == '' or
        # check Attribute (Name, City, Post Code); wenn Attribut ist leer > dann überspringen
        if len(p['v_name']) == 0 or len(p['l_name']) == 0 or len(p['city']) == 0 or len(str(p['post code'])) == 0:
            pListe.append(Person(name=p['v_name'], lname=p['l_name'], city=p['city'], postCode=p['post code']))
        else:
            if p['v_name'] == p['v_name']:
                pDouble.append(Person(name=p['v_name'], lname=p['l_name'], city=p['city'], postCode=p['post code']))
            continue

for x in pListe:
    print(f'EMPTY ATTRIBUTES: {str.capitalize(x.name), str.capitalize(x.lname), x.postCode}')
for x in pDouble:
    print(f'DUPLICATE: {str.capitalize(x.name), x.postCode, str.capitalize(x.city)}')

print(f'Endgültige Anzahl d. Personen: {len(set(pListe))}')

#for p in pDouble:
    #fuckinzeile = ''.join(map(str, pDouble))
    #print(f'DUPLICATE: {pDouble}')

    #print('\n'.join(map(str, pListe)))
    #print('\n'.join(map(str, pDouble)))

    #rint(f'{len(set(pListe))} - {len(set(pDouble))} ')

    #print(set(pListe))
    #print(f'Endgültige Anzahl d. Personen: {len(set(pListe))}')

if name == 'main': main()

{ "people": [ {"v_name":"Manfred", "l_name":"Zolles", "city":"Langenzersdorf", "post code": 1210}, {"v_name":"niklas", "l_name":"Wild", "city":"", "post code": 2100}, {"v_name":"Petra", "l_name":"Rosenberger", "city":"Margareten", "post code": 1050}, {"v_name":"Werner", "l_name":"Dutter", "city":"train", "post code": 4654}, {"v_name":"Philipp", "l_name":"Schober", "city":"Grönitz", "post code": 9470}, {"v_name":"Holly", "l_name":"Moller", "city":"Stams", "post code": 6422}, {"v_name":"Holly", "l_name":"Moller", "city":"Stams", "post code": 6422}, {"v_name":"Piper", "l_name":"pErrish", "city":"moserwinkl", "post code": 9361}, {"v_name":"Philipp", "l_name":"Schober", "city":"Grönitz", "post code": 9470}, {"v_name":"Siegried", "l_name":"laNgrock","city":"Markersdorf", "post code": 3384}, {"v_name":"Janice", "l_name":"Griff", "city":"Grönitz", "post code": 9470}, {"v_name":"janicE", "l_name":"Griff", "city":"MosErwinkl", "post code": 9361}, {"v_name":"michael", "l_name":"Schöpfer", "city":"blindenmarkt", "post code": 3372}, {"v_name":"Niki", "l_name":"Benz", "city":"", "post code": 5422}, {"v_name":"Andre", "l_name":"Daimler", "city":"Göschl", "post code": ""}, {"v_name":"", "l_name":"Janser", "city":"Alsergrund", "post code": 1090}, {"v_name":"michael", "l_name":"Schöpfer", "city":"blindenmarkt", "post code": 3372} ] }

Diese Frage melden
gefragt

Punkte: 12

 
Kommentar schreiben
0 Antworten