Ich bin derzeit verwirrt, wie ich eine externe Datei bestellen soll. Ich habe derzeit eine Datei mit dem Namen 'Nomen' (es ist eine TXT-Datei). Ich möchte in der Lage sein, alle Werte aus der Datei zu übernehmen und nach Größe zu ordnen. Je höher der Wert, desto höher ist er in der Liste. Ich habe versucht, dies durch Blasensortierung zu tun.

Mein aktuelles Problem ist, dass ich nicht glaube, dass ich die Substantive tatsächlich nehme und in die Liste eingebe, die ich im Python-Code eingerichtet habe.

Hier ist der Code (Könnte sinnvoller sein als mein Englisch;)):

def nounValue(noun):
    return noun.rsplit('(',1)[1]

with open("nouns.txt", "r")as file:
    nouns = file.read().splitlines()

for noun in nouns:
    print(noun)

orderList = [noun]
swapped = True
print(orderList)
while swapped == True:
    swapped = False
    for i in range(len(orderList)-1):
        if orderList[i] > orderList[i+1]:
            temp = orderList[i]
            orderList[i] = orderList[i + 1]
            orderList[i + 1] = temp
            swapped = True

print (orderList)

Hier ist die Datei " nouns.txt ":

Time,25
Year,10
People,1
Way,8
Day,6
Man,5
0
PythonNovice 9 Dez. 2013 im 14:53

2 Antworten

Beste Antwort

NumPy ist ein gutes Werkzeug für diesen Job, wenn Sie Wert auf Leistung legen:

import numpy as np

dtype=[('name', object), ('score', int)]
data = np.loadtxt('nouns.txt', delimiter=',', dtype=dtype)
data.sort(order='score')
print data
3
John Zwinck 9 Dez. 2013 im 11:01

Sie müssen keinen eigenen Sortieralgorithmus schreiben, Python hat dies bereits behandelt. Sie können Ihre Daten auch viel einfacher lesen:

with open("nouns.txt") as file:
    nouns = []
    for line in file:
        noun, count = line.split(",")
        nouns.append((int(count), noun))

Jetzt können Sie einfach nach count sortieren (da es jetzt das erste Element im Tupel ist):

nouns.sort()

Und drucken Sie die Ergebnisse erneut aus:

for count, noun in nouns:
    print("{0},{1}".format(noun,count))
3
Tim Pietzcker 9 Dez. 2013 im 11:09