Input in ID encode und decode

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
anodes
User
Beiträge: 6
Registriert: Donnerstag 23. November 2017, 21:01

Hallo liebes Python Forum
ich würde gerne einen input:
>>>>attribut = input ("Bitte Attribut eingeben: ")
in eine id umwandeln.

Mein Code:
attribut = input ("Bitte Attribut eingeben: ")
a= [ ]
a.append (attribut)

Code = id(a)
print(Code)

Jetzt die eigentliche fragen:Kann ich die ID wieder zurück wandeln in den eigentlichen Input wert ?
Ich würde mich über Lösungen sehr freuen.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@anodes: was ist für Dich eine ID? Ich glaube, es ist nicht das, was Dir die id-Funktion liefert. Für was brauchst Du die ID?
anodes
User
Beiträge: 6
Registriert: Donnerstag 23. November 2017, 21:01

@sirus3
Eigentlich möchte ich folgendes tun.
Beispiel:
Ich möchte ein "Produkt" in folgende ID oder Kennung umwandeln : A12345 und in eine Datei speichern.
und sie durch Abfrage wieder zu entschlüsseln. Dabei sollte die Nummer von A1 beginnen usw. bis .....

----Eintragen-----
Bitte Attribut eingeben : Produkt
----Ausgabe-----
AttributID = A12345 (soll in eine Datei gespeichert werden die wie folgt sein sollte : Attribut:"Produkt"; AttributID:"A12345")


---Programm Abfrage-----
Bitte AttributID eingeben= A12345
AttributID: A12345 = Produkt

hoffe das ist Lösbar, wäre sehr dankbar darüber.
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

@anodes
Wenn ich dich richtig verstehe, möchtest du einfach IDs für eigne Zwecke generieren, ja? Sollen die eine bestimmte Form haben? Und wozu benötigst du IDs? Python hat dafür jedenfalls keine eingebaute Funktion ('id' ist für etwas anderes gedacht). Du musst dir so eine Funktionalität selbst bauen. In Einzelfällen kann man auch mal schauen, ob Hashes gehen; so allgemein würde ich das aber nicht empfehlen.
anodes
User
Beiträge: 6
Registriert: Donnerstag 23. November 2017, 21:01

nezzcarth hat geschrieben:@anodes
Wenn ich dich richtig verstehe, möchtest du einfach IDs für eigne Zwecke generieren, ja? Sollen die eine bestimmte Form haben? Und wozu benötigst du IDs? Python hat dafür jedenfalls keine eingebaute Funktion ('id' ist für etwas anderes gedacht). Du musst dir so eine Funktionalität selbst bauen. In Einzelfällen kann man auch mal schauen, ob Hashes gehen; so allgemein würde ich das aber nicht empfehlen.
Ja! Ich möchte dadurch eine Datenreduktion erwirken.
Prinzipiell sollte die Form so aufgebaut sein:

Produkt = A1, Hersteller=A2 usw.

Jeden Wert den ich eingebe soll im Format :A1,... fortlaufend generiert werden und in eine Liste gespeichert werden. Und dann wieder abrufbar sein.

Also wie ein Dictionary. Produkt heißt übersetzt A1 nur das der Übersetzte Teil automatisch generiert wird.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

IMHO brauchst du dann eine Datenbank. In deren Entwurf musst du dann ein wenig Gehirnschmalz stecken und dir ggf. eine Funktion zum generieren des Primärschlüssels schreiben. Datenbanken könnten OOTB zwar Primärschlüssel automatisch hoch zählen, aber halt "nur" nummerisch. A12345 ist aber nicht nummerisch. Du könntest aber einen Composite Primary Key nutzen, den die DB automatisch aus dem Buchstaben und der Zahl zusammensetzt. Dann müsstest du dich beim Anlegen der Daten "nur" darum kümmern, dass der Buchstabe richtig gesetzt wird.

In wie weit du da eine Datenreduktion erreichen willst sehe ich nicht... Wenn jedem Produkt genau eine ID zugeordnet ist, dann hast du eine 1:1 Beziehung - da wird nichts reduziert.

Gruß, noisefloor
anodes
User
Beiträge: 6
Registriert: Donnerstag 23. November 2017, 21:01

noisefloor hat geschrieben:Hallo,

IMHO brauchst du dann eine Datenbank. In deren Entwurf musst du dann ein wenig Gehirnschmalz stecken und dir ggf. eine Funktion zum generieren des Primärschlüssels schreiben. Datenbanken könnten OOTB zwar Primärschlüssel automatisch hoch zählen, aber halt "nur" nummerisch. A12345 ist aber nicht nummerisch. Du könntest aber einen Composite Primary Key nutzen, den die DB automatisch aus dem Buchstaben und der Zahl zusammensetzt. Dann müsstest du dich beim Anlegen der Daten "nur" darum kümmern, dass der Buchstabe richtig gesetzt wird.

In wie weit du da eine Datenreduktion erreichen willst sehe ich nicht... Wenn jedem Produkt genau eine ID zugeordnet ist, dann hast du eine 1:1 Beziehung - da wird nichts reduziert.

Gruß, noisefloor
Hi Noisefloor,
vielen Dank für deine Empfehlung. Ich bin ein Python Newbee.
Könnte man ein Dictionary anlegen wo bei die Übersetzung dann eine Fortlaufende ID wäre.
Beispiel:
Input = Product
Übersetzung davon ist = 1

Wunsch Programm:

#Anlegen eines Attributes
Bitte Attribut eingeben= Product
(Product wird dann automatisch die 1 zugeteilt und das ganze in eine Datei geschrieben = Product;1

#Abrufen eines Attributes
Bitte Attribut eingeben = Product
AttributId ist = 1
(und umgekehrt)

Hast du da ein Skript Beispiel ??? Wäre dankbar für jede Hilfe.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Könnte man ein Dictionary anlegen wo bei die Übersetzung dann eine Fortlaufende ID wäre.
Grundsätzlich ja. Wobei du dich selber um's Hochzählen kümmern musst, dass ist keine Standardfunktion von Dicts. Dicts speichern geht auch, über das pickle-Modul.

Das ist unterm Strich aber so aufwendig, dass du besser direkt eine Datenbank nimmst. Python hat SQLite an Bord, dass sollte für deine Zwecke vollkommen ausreichend. Die Nutzung von SQLite ist in der Pyhton-Doku erklärt.

Was ist eigentlich der Sinn des ganzen, also was willst du programmieren?

Gruß, noisefloor
anodes
User
Beiträge: 6
Registriert: Donnerstag 23. November 2017, 21:01

noisefloor hat geschrieben:Hallo,
Könnte man ein Dictionary anlegen wo bei die Übersetzung dann eine Fortlaufende ID wäre.
Grundsätzlich ja. Wobei du dich selber um's Hochzählen kümmern musst, dass ist keine Standardfunktion von Dicts. Dicts speichern geht auch, über das pickle-Modul.

Das ist unterm Strich aber so aufwendig, dass du besser direkt eine Datenbank nimmst. Python hat SQLite an Bord, dass sollte für deine Zwecke vollkommen ausreichend. Die Nutzung von SQLite ist in der Pyhton-Doku erklärt.

Was ist eigentlich der Sinn des ganzen, also was willst du programmieren?

Gruß, noisefloor
Danke Noisefloor.
Der Sinn des ganzen ist es das ich für jedes Attribut einen eindeutigen Key generiere den ich später in "Snippets" einbinden kann.
so kann ich komplexe Daten einfacher in Snippets einbinden....
Ist etwas Complicated um das zu schreiben und komplex.
Irgend wie ne ander ComArt mit dir möglich?
Gruß Anodes
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das Problem ist ja nicht, ein Schlüssel-Werte Paar zu erzeugen, sondern einen _sinnvollen_ Schlüssel zu erzeugen und die ganze Datenstruktur nachher auch wieder _sinnvoll_ abfragen zu können. Da man bei Schlüssel-Werte Paaren in der Regel nach dem Schlüssel sucht, macht das hier IMHO nicht so viel Sinn. Das musst aber letztendlich du entscheiden, weil aktuell nur du weißt, was du wie wo am Ende abfragen willst.

Was sind "Snippets" und was meinst du mit "ComArt"?

Gruß, noisefloor

BTW: hör' mal bitte auf, meine vorherigen Post als Komplettzitat anzubauen. Das bringt so rein gar nichts - außer, dass deine Postings unübersichtlich werden.
anodes
User
Beiträge: 6
Registriert: Donnerstag 23. November 2017, 21:01

@noisefloor Danke:) mit ComArt meinte ich email oder Kontaktdatenaustausch damit ich es erklären kann.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
mit ComArt meinte ich email oder Kontaktdatenaustausch damit ich es erklären kann.
Axo... Nein, ich leiste grundsätzlich keine Support per PN oder per IRC/E-Mail / was-auch-immer. Wenn via Forum, dann können andere Nutzer mit gleichen / ähnlichen Problemen von möglicherweise aufgezeigten Lösungswegen profitieren.

Gruß, noisefloor
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

noisefloor hat geschrieben:Nein, ich leiste grundsätzlich keine Support per PN oder per IRC/E-Mail / was-auch-immer. Wenn via Forum, dann können andere Nutzer mit gleichen / ähnlichen Problemen von möglicherweise aufgezeigten Lösungswegen profitieren.
Sehe ich genau so. Außerdem können mehrere Helfende sich bei den Antworten ergänzen und man hat mitunter mehrere Meinungen oder Herangehensweisen. Zudem kommt man sich nicht wie ein unbezahlter Privatdozent vor, da aus einer PN, wenn man "anbeißt", gern auch eine ganze Menge PNs werden.
Antworten