Ich habe diesen Code bisher:

def name_counts(name_list):
    name_dict = {}
    for word in name_list:
        if word in name_dict:
            name_dict[word] += 1
        else:
            name_dict[word] = 1


print(name_counts(name_list))

Was zu Folgendem führt:

Aber ich brauche es, um nur die Vornamen zu drucken, nicht die letzten. Wie würde ich das machen? Ich weiß, dass ich die Split-Funktion verwenden sollte, aber jedes Mal, wenn ich name_list.split() mache, wird ein Attributfehler zurückgegeben.

1
user9660128 18 Apr. 2018 im 04:06

4 Antworten

Beste Antwort

Ich würde am Anfang der for - Schleife eine temporäre Variable erstellen, die den geteilten Namen enthält, wie folgt:

for word in name_list:
  name = word.split()[0]
  if name in name_dict:
    name_dict[name] += 1
  else:
    name_dict[name] = 0

Beachten Sie, dass die Funktion .split() ein list zurückgibt. Um den Vornamen zu erhalten, müssen Sie das Element am Index 0 abrufen.

Ich hoffe, das hilft!

0
Jono 2906 18 Apr. 2018 im 01:14

Dies kann in einer einzigen Zeile mithilfe von Listenverständnis erreicht werden.

>>>from collections import Counter
>>>name_list = ["Davy Jones", "Davy Crockett", "George Washington"]
>>>Counter([name.split()[0] for name in name_list])
#result -->
Counter({'Davy': 2, 'George': 1})
0
Sjshovan 18 Apr. 2018 im 04:42

Der Zähler aus dem Erfassungsmodul macht genau das! Sie können verwenden:

from collections import Counter
# get firstname from name
print(Counter(firstname))

EDIT: Ich lasse dich herausfinden, wie man den Vornamen analysiert :)

1
TwistedSim 18 Apr. 2018 im 01:13

Du bist sehr nah! Was Sie gerade in Ihrer Funktion tun, ist nur den vollständigen Namen zu betrachten, während die Anweisungen besagen, dass Sie nur den Vornamen betrachten und sehen sollten, wie viel er erschien. Was Sie haben sollten, ist so etwas. Erstellen Sie beim Durchsuchen jedes Wortes in der Schleife ein Array, sagen wir name und setzen Sie es auf word.split(). Überprüfen Sie dann wie in Ihrem folgenden Code, ob name[0] (der Vorname) in der Liste vorhanden ist, und erhöhen Sie name_dict[name[0]], falls dies der Fall ist. Wenn nicht, erstellen Sie mit name[0] einen neuen Schlüssel und setzen Sie ihn auf 1.

1
bluewind03 18 Apr. 2018 im 01:15