2016-09-21 2 views
0

Ich habe vor kurzem angefangen, Python zu lernen und bin in einem kleinen Projekt steckengeblieben, das ich versuchte. Ich habe ein Array, das Daten für mein Projekt enthält, ich wollte dies mit dem Code verknüpfen.Wörterbücher und Unicode

>>> keys = ['a', 'b', 'c'] 
    >>> values = [1, 2, 3] 
    >>> dictionary = dict(zip(keys, values)) 

Aber für mein Projekt brauche ich japanische Zeichen in meinem Werte-Array. Gibt es eine Methode, bei der ich meine japanischen Zeichen im Array haben kann? Auch wenn ich die Worte in Verwendung von Unicode geben wäre, wie würde ich die Worte, um die Unicode im Wörterbuch Zum Beispiel gleichwertig sein kann angezeigt werden:

print(u'\4096') 

funktionieren würde, aber wenn ich das ganze Wörterbuch drucken war als

print (dictionary) 

Es würde nicht meine japanischen Zeichen anzeigen. Wie könnte ich dieses Problem umgehen?

Extra:

Ein weiteres Problem ist, dass ich meine erste Array statt als eine Liste haben, wie es erforderlich war, Informationen zusammen zu speichern, gibt es eine alternative Lösung?

dictionary = dict(zip(file_content,japanese)) 
    TypeError: unhashable type: 'list' 
+0

http://stackoverflow.com/questions/14682933/chinese-and-japanese-character-support-in-python – AlvaroP

+0

Verwenden Sie für Ihr Extra ein Tupel. Die Schlüssel eines Wörterbuchs sollten unveränderlich sein. Ein Tupel ist unveränderlich, eine Liste dagegen nicht. Welches ist die Fehlermeldung. – Elan

+0

@AlvaroP Danke für die Antwort, aber ich habe diesen Beitrag bereits durchgesehen, es hilft mir immer noch nicht bei meinem Problem. Zum Beispiel benutze ich IDLE Python 3.5.3 und wenn ich Unicode für japanische Zeichen drucke, muss ich es aus irgendeinem seltsamen Grund eingeben. Ich kann es nicht aus der Liste nehmen und es dann ausdrucken. –

Antwort

0

Es gibt zwei große Aromen von Python - Python2 und Python3, und einer der Unterschiede zwischen ihnen ist, wie sie Unicode behandeln. Als Faustregel sollten Sie Python3 verwenden, da es eine viel bessere Sprache ist und im Laufe der Zeit immer besser wird. Die meisten größeren Bibliotheken unterstützen es.

In Python3, sollte dies nur funktionieren:

keys = ['a', 'b', 'c'] 
values = ['á', 'b', 'ç'] 
dictionary = dict(zip(keys, values)) 
print(dictionary) # {'a': 'á', 'b': 'b', 'c': 'ç'} 

In Python2, die gleiche Sache arbeiten sollte, aber Sie sollten Strings "Unicode" werden, das so etwas wie:

keys = ['a', 'b', 'c'] 
values = [u'á', u'b', u'ç'] 
dictionary = dict(zip(keys, values)) 
print(dictionary) # {'a': u'\xe1', 'c': u'\xe7', 'b': u'b'} 

Die Strings speichern den gewünschten Unicode-Inhalt richtig, sie werden aufgrund der Naivität der Druckfunktion einfach nicht gut gedruckt. Aber wenn Sie beispielsweise einen Schlüssel drucken möchten, wird er es herausfinden und das Richtige tun.

Sie müssen immer darauf achten, die Strings ordnungsgemäß zu codieren, wenn Sie die Ausgabe in Dateien oder andere Streams schreiben.

ist eine ziemlich gute Einführung in das Thema Python und Strings.

+0

Ich würde gerne fragen, was, wenn meine Keys Werte Arrays innerhalb von Arrays enthalten, wäre ich nicht in der Lage, Wörterbücher zu verwenden, würde ich? –

+0

In diesem Fall sollten Sie Tupel anstelle von Arrays/Listen verwenden. Schlüssel können nicht veränderbar sein, und Tupel sind unveränderbare Sammlungen. Sie können ein Tupel aus einer Liste mit Tupel (some_list) erstellen. –

+0

Wie würde ich ein Array mit Zeichen wie ["こ ん に ち は"] mit Tasten wie [['Hallo', 'Dies wird häufig bei der Begrüßung verwendet. Es wäre nicht ein guter Morgen, sondern ein Hallo, wenn man Häuser betritt oder jemanden zum ersten Mal trifft ',' konnichiha ']]? –