2016-11-05 4 views
0
# -*- coding: utf-8 -*- 
from collections import Counter 
import itertools, collections 
ListeA=['it', 'was', 'the', 'besttttttttttttttrtrtrtrtrttrtr', 'of', 'times', 'it', 'was', 
     'the', 'worst', 'of', 'times', 'it', 'was', 'the', 'age', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx' 
     'of', 'wisdom', 'it', 'was', 'the', 'age', 'of', 'xx' 
     'foolishness'] 

index = collections.defaultdict(list); 

for value, key in enumerate(ListeA): 
    index[key].append(value) 

for key1,value1 in index.items(): 
    if len(value1)>=4: 
     print value1 

Ausgabe nicht korrekt. Was ist mein Code Problem. Ausgabe scheintwarum falsches Ergebnis ausdrucken. python enumerate, counter

[0, 6, 12, 27] 
[16, 17, 18, 19, 20, 21, 22, 23, 24] 
[2, 8, 14, 29] 
[1, 7, 13, 28] 

I Nummer hinzufügen leicht zu lesen ListeA=[0'it', 1'was', 2'the', 3'besttttttttttttttrtrtrtrtrttrtr', 4'of', 5'times', 6'it', 7'was', 8'the', 9'worst', 10'of', 11'times', 12'it', 13'was', 14'the', 15'age', 16'xx', 17'xx', 18'xx', 19'xx', 20'xx', 21'xx', 22'xx', 23'xx', 24'xx', 25'xx' 26'of', 27'wisdom', 28'it', 29'was', 30'the', 31'age', 32'of', 33'xx' 34'foolishness']

+4

Was ist daran falsch? Sei präzise über die von dir * erwartete * Ausgabe. –

Antwort

0

Das Ergebnis korrekt ist, soweit ich sehen kann:

>>> for value, key in enumerate(ListeA): print value, key 
... 
0 it 
1 was 
2 the 
3 besttttttttttttttrtrtrtrtrttrtr 
4 of 
5 times 
6 it 
7 was 
8 the 
9 worst 
10 of 
11 times 
12 it 
13 was 
14 the 
15 age 
16 xx 
17 xx 
18 xx 
19 xx 
20 xx 
21 xx 
22 xx 
23 xx 
24 xx 
25 xxof 
26 wisdom 
27 it 
28 was 
29 the 
30 age 
31 of 
32 xxfoolishness 
>>> 

Sind Sie ganz sicher, dass der Code, wo Sie „Nummer hinzufügen leicht zu lesen "ist der gleiche Code wie der in der Probe?

Beachten Sie, dass Python, wenn Sie ein Komma verpassen, Zeichenfolgen für Sie verkettet (siehe Einträge 25 und 32 zum Beispiel).

+1

mein Ausgang ist [0, 6, 12, 27] [16, 17, 18, 19, 20, 21, 22, 23, 24] [2, 8, 14, 29] [1, 7, 13 , 28] jede letzte Zahl ist falsch. es zeigt 0,6,12 als "es" und 27 "Weisheit" – Dnr

+0

Ich sah das. Beachten Sie, dass diese Ausgabe vollkommen korrekt ist; Fügen Sie Kommas am Ende Ihrer Zeilen hinzu. Sie bevorzugen, dass Python keine Strings für Sie verkettet. – alf

+0

danke. ich sah es . Es gibt kein Komma. – Dnr

1

Ihnen fehlen einige Kommas am Ende der Zeilen, aus denen Ihre Liste besteht.

Da es sich bei den Listenelementen um Zeichenfolgenliterale handelt, haben Sie zwei Elemente nebeneinander ohne Syntax zwischen ihnen. Ein wenig bekanntes Feature in Python ist, dass benachbarte String-Literale verkettet werden. So ist "foo" "bar" die gleiche Zeichenfolge wie "foobar". Dies kann sich auch auf Zeilenumbrüche erstrecken, solange der Zeilenumbruch den Ausdruck nicht beendet (normalerweise, weil er in Klammern oder Klammern steht).

Das Problem bedeutet, dass Sie "xxof" und "xxfoolishness" in Ihren Daten haben werden, anstatt getrennte "xx" (zweimal), "of" und "foolishness" Saiten. Es kann auch Ihre erwartete Anzahl abwerfen.

Um das Problem zu beheben, fügen Sie die Kommas am Ende der Linien, wo sie verpasst haben:

ListeA=['it', 'was', 'the', 'besttttttttttttttrtrtrtrtrttrtr', 'of', 'times', 'it', 'was', 
    'the', 'worst', 'of', 'times', 'it', 'was', 'the', 'age', 'xx', 'xx', 
    'xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx', 'xx', # add comma here 
    'of', 'wisdom', 'it', 'was', 'the', 'age', 'of', 'xx', # and here 
    'foolishness'] 

Neben den Kommas, ich die längste Linie zu brechen auch eine zusätzliche Newline hinzugefügt am zu einem früheren Zeitpunkt, so dass das Ganze eher auf den Bildschirm passt (ohne horizontale Bildlaufleiste). PEP 8 empfiehlt, dass Codezeilen nicht länger als 79 Zeichen oder 72 Zeichen für Docstrings und Kommentare sind, die auf beliebige Weise neu angeordnet werden können. Das ist nur eine strenge Voraussetzung für Code, der zu Python selbst beigetragen wurde (zB Korrekturen an der Standardbibliothek), aber viele Leute versuchen, PEP 8 in ihrem eigenen Code zu folgen, und viele andere Python Style Guides haben auch Längenbeschränkungen (obwohl sie oft ein etwas großzügiger über die genaue Anzahl der Zeichen).