2016-05-29 12 views
1

Wie kann ich das beheben?syntax_error: Update für das Wörterbuch

# E.g. word_count("I am that I am") gets back a dictionary like: 
# {'i': 2, 'am': 2, 'that': 1} 
# Lowercase the string to make it easier. 
# Using .split() on the sentence will give you a list of words. 
# In a for loop of that list, you'll have a word that you can 
# check for inclusion in the dict (with "if word in dict"-style syntax). 
# Or add it to the dict with something like word_dict[word] = 1. 
def word_count(string): 
    word_list = string.split() 
    word_dict = {} 
    for word in word_list: 
     if word in word_dict: 
      word_dict.update(word:word_dict(word)+1) 
     else: 
      word_dict[word]=1 
    return word_dict 

enter image description here

Haftungsausschluss: Insgesamt Neuling in Python

Antwort

2

Um einen Schlüssel in einem Wörterbuch zu aktualisieren, weisen Sie einfach auf die Taste [...] Abonnement Syntax:

word_dict[word] = word_dict[word] + 1 

oder sogar

word_dict[word] += 1 

Ihr Versuch ist nicht gültig Syntax, aus zwei Gründen:

  • word_dict.update() ist ein Methodenaufruf, alles innerhalb der (...) Aufruf-Syntax ein gültiger Ausdruck sein muss. key: value ist kein eigenständiger Ausdruck, der nur innerhalb einer {key: value} Wörterbuchanzeige gültig ist. word_dict.update() nimmt entweder ein Wörterbuchobjekt oder eine Sequenz von (key, value) Paaren.
  • word_dict(word) würde versuchen, Anruf das Wörterbuch lieber als versuchen, den Wert für den Schlüssel word abrufen.

word_dict.update() Mit nur einem Schlüssel zu aktualisieren, ist ein wenig übertrieben, denn es ist ein anderes Wörterbuch oder Sequenz erfordert die Erstellung. Entweder eine der folgenden funktionieren würde:

word_dict.update({word: word_dict[word] + 1}) 

oder

word_dict.update([(word, word_dict[word] + 1)]) 

Beachten Sie, dass die Python-Standardbibliothek kommt mit einer besseren Lösung für Worte zu zählen: die collections.Counter() class:

from collections import Counter 

def word_count(string): 
    return Counter(string.split()) 

A Counter() ist eine Unterklasse von dict.

+0

Wie würde ich diese Zeile mit .update() schreiben? danke für die antwort :) –

+0

wenn interviewte '' aus sammlungen importieren Counter def word_count (string): zurück Counter (string.split()) 'ist das akzeptabel? Wie hoch ist der Sprachgebrauch, der in einem Interview akzeptabel ist? Danke für die Tipps –

+1

@MonaJalal: Ich würde sagen, dass es ein Maß an Vertrautheit mit der Standard-Bibliothek demonstriert.Ich würde auch weiter forschen, wenn sie über alle Funktionen von 'Counter() 'Bescheid wissen, fragen, was sonst vielleicht damit gemacht werden könnte, oder um mir zu zeigen, wie man dasselbe ohne' Counter() 'macht Sonde grundlegende Python-Kenntnisse. Alles hängt von der Position ab, für die Sie interviewen. –

1

Sie können implementieren mit dict.update. Hier ist ein Beispiel für dict.update

In [74]: test_dict = {1:'apple',2:'grapes'} 
In [75]: test_dict.update({3:'orange'}) 
In [76]: test_dict 
Out[76]: {1: 'apple', 2: 'test', 3: 'orange'} 

Für Ihr Problem ändern Sie den Code wie diese word_dict.update(word:word_dict(word)+1)zuword_dict.update({word:word_dict(word)+1}).

Hier ist ein reference.

Verwandte Themen