2016-09-21 15 views
0

私は最近、Pythonの学習を始めました。私が試していた小さなプロジェクトに悩まされています。 私は自分のプロジェクトのためのデータを含む配列を持っています。私はコードを使ってこれをリンクしたいと思っていました。辞書とユニコード

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

私のプロジェクトでは、値の配列に日本語の文字が必要です。配列に日本語の文字を入れる方法はありますか?また、私はユニコードを使用して単語を入力した場合、どのように私は、例えば、辞書 でのUnicodeと同等の単語を表示することができるようになります。

print(u'\4096') 

が働くだろうが、私がいた場合は辞書全体を印刷しますas

print (dictionary) 

日本語の文字は表示されません。この問題をどうやって回避することができますか?

エクストラ:

もう一つの問題は、それが一緒に入れた情報を格納するのに必要とされたように私の代わりにリストとしての私の最初の配列を持っているということである、代替ソリューションはありますか? Python2とのpython3、およびそれらの間の違いの一つは、彼らがUnicodeをどのように扱うかである -

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

余分にはタプルを使用してください。辞書のキーは不変でなければなりません。タプルは不変ですがリストはそうではありません。どのエラーメッセージが表示されます。 – Elan

+0

@ AlvaroP答えをありがとうが、私はすでにその投稿を見て、それでも私の問題で私を助けていない。たとえば、私はIDLE python 3.5.3を使用しています。また、日本語の文字のUnicodeを印刷するときには、何らかの奇妙な理由のためにそれをタイプする必要があります。私はリストから取り出して印刷することはできません。 –

答えて

0

二つの主要なパイソンのフレーバーがあります。経験上、Python3は、はるかに優れた言語で時間がたつにつれて良くなるため、Python3を使用する必要があります。より大きなライブラリのほとんどがそれをサポートしています。 python3で

が、これはうまく動作するはずです:Python2では

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

を、同じことは動作するはずですが、あなたは "ユニコード" の文字列を使用する必要があり、このような何か:

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'} 

文字列は、あなたが望むUnicodeの内容を適切に格納します。print関数の単純さのために、文字列はうまく印刷されません。しかし、たとえば、キーを印刷したい場合は、それを把握して正しいことを行います。

ファイルやその他の種類のストリームに出力を書き込むときは、常に文字列を適切にエンコードする必要があります。

は、Pythonと文字列のトピックのかなり良い紹介です。

+0

私のキーの値に配列内の配列が含まれていたら、辞書を使うことができないのですか? –

+0

この場合、配列/リストではなく、タプルを使用する必要があります。キーは変更できません。タプルは不変のコレクションです。あなたはタプル(some_list)でリストからタプルを作ることができます。 –

+0

[[こんにちは]]のような文字を含む配列を[['hello'、 'これは一般的に人を挨拶するときに使用されます。おはようございますが、家に入るとき、初めて会うときには、こんにちはとして使用されないだろうか、コンニチハ]]? –