2017-11-03 1 views
-1

file1.pyPython Wörterbuch von einem anderen Modul, Globals() nicht geklappt

a = {'fullname':'John Wick', 'Age': 35 , 'job':'Hitman'} 
b = {'fullname':'Mark Zuckerberg', 'Age': 30, 'job': 'Developer'} 
c = {'fullname':'Will smith', 'Age': 45, 'job': 'Actor'} 
d = {'fullname':'Messi' , 'Age': 28, 'job' : 'Player'} 
so on... and many more details 

Hinweis: die dict Variablen sind sehr unterschiedlich. Aufgabe ist, "Alter" von Benutzereingabe wie "Name" oder "Job" für ex zu erhalten: Benutzer gibt messi ein ... er muss 28 als die Ausgabe bekommen.

File2.py

from File1.py import * 
#what should the code be to access the age 

user_input=raw_input("enter a Name: ") 

# user_input contains the name of the person I want to get the Age 

Ich habe versucht, Globals() verwendet, aber es erschwert meine Situation Es erstellt eine Liste, die dann durch integer zugegriffen werden muss.

Gibt es eine Möglichkeit, die Werte innerhalb des Diktats zu suchen und mit IF-Bedingung zu vergleichen ??

+0

Ich bin überrascht, 'von File1 .py import * 'funktioniert –

+0

@MosesKoledoye wie sonst wirst du es benutzen? –

Antwort

0

Ja, es gibt Möglichkeiten, dies zu tun, aber Sie komplizieren die Situation.

Zuallererst, vereinfachen Sie Ihr Programm noch mehr: Ziehen Sie den Remote-Code in Ihre Programmdatei und lösen Sie das Zugriffsproblem dort. Nach das funktioniert, dann teilen Sie es in eine zweite Datei.

Zweitens, wenn Sie wollen, dass diese Elemente in einer Form sind, die Sie leicht suchen können, tun Sie das. Im Moment haben Sie sich sehr bemüht, sie in verschiedene Variablen aufzuteilen, wenn Sie sie offensichtlich zusammenhalten wollen. Tun Sie dies in einer von zwei Möglichkeiten:

(1) einfache Liste:

people = [ 
    {'fullname':'John Wick', 'Age': 35 , 'job':'Hitman'}, 
    {'fullname':'Mark Zuckerberg', 'Age': 30, 'job': 'Developer'}, 
    {'fullname':'Will smith', 'Age': 45, 'job': 'Actor'}, 
    {'fullname':'Messi' , 'Age': 28, 'job' : 'Player'} 
] 

Verwenden Sie nun Ihre normale Liste Suchmethoden das passende Produkt zu finden.

(2) Wörterbuch, indiziert, wie Sie wollen, es zu benutzen:

people = { 
    'John Wick': {'Age': 35 , 'job':'Hitman'}, 
    'Mark Zuckerberg': {'Age': 30, 'job': 'Developer'}, 
    'Will smith': {'Age': 45, 'job': 'Actor'}, 
    'Messi': {'Age': 28, 'job' : 'Player'} 
} 

Auf diese Weise erhalten Sie die Aufzeichnung einer Person mit einem direkten Bezug, people[user_input].

Bewegt Sie das?

+0

Dies ist nur ein kleines Beispiel, ich habe es mit 4000 Datenzeilen in ähnlicher Weise zu tun. das Umordnen in dieses Format würde viel Zeit in Anspruch nehmen. also, wenn es einen Weg gibt, der einfach meine derzeitige Situation könnte? –

+0

Ihre Daten sind in einer separaten Datei mit 4000 verschiedenen Variablennamen? – Prune

+0

yesssssss !!!!!!!! und das ist nicht die Art von Daten, aber Sie können etwas ähnliches beziehen –

0

versuchen, eine Sicherungskopie Ihres file1.py als file1.txt zu erstellen und sie Operationen auf, dass sehr

Datei einen kleinen nützlichen teilen Schnipsel hier

import re 
user_input=raw_input("enter a Name: ") 
with open("file1.txt") as f: 
    for line in f: 
     #print line 
     matches = re.findall(r'\'(.+?)\'', line) 
     if user_input in matches: 
      age = re.findall(r'\d+', line) 
      print age 
+0

nein das löst es nicht! Bitte führen Sie ein Skript und sehen, ob Sie tatsächlich erhalten und auf diese Weise ausgeben können ... Sorry, aber diese Idee wird fehlschlagen –

+0

Ich habe nicht den gesamten Code geteilt plz versuchen von print line Logik mit regex lib in Python, werden Sie auf jeden Fall gelingen. –

+0

Regex wird was ??? finde die Benutzereingabe aus dem Dateiinhalt !! fantastisch .... dann, wie wird das lösen, mein Alter dieses Benutzereingangs zu bekommen ?? Die Idee ist nicht annähernd, was ich erwartet habe, aber danke für den Versuch. –

Verwandte Themen