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.
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} ] }
Punkte: 12
Markdown wird unterstützt.