-2

私は次のコードで立ち往生しています:

nonsense = 'faxoyk'
R = {CHR : 'afokyx'.index(CHR) for CHR in nonsense}
print R

私はpythonが初めてで、キーと値がどのように設定されるかについて混乱しています。このプロセスに関する洞察は大歓迎です。

4

2 に答える 2

2

辞書内包表記は、Python のリスト内包表記の後に追加された機能です: リスト内包
表記

nonsenseは文字列です。ただし、これはシーケンス オブジェクトであるため、次のように使用してループfor CHR in nonsenseすることは、各文字をループすることを意味します。

print [CHR for CHR in nonsense]
#['f', 'a', 'x', 'o', 'y', 'k']

ループの値の部分は、次のようになります。

['afokyx'.index(CHR) for CHR in nonsense]
[1, 0, 5, 2, 4, 3]

各ループで辞書理解を実行するCHRと、文字列の文字になります。キーをに設定し、そのキーの値を文字列リテラルCHRのインデックスに設定するように求めていますCHR"afokyx"

python2.7 より前 (dict 内包表記が導入される前) では、リスト内包表記では次のようになっていました。

print [(CHR, 'afokyx'.index(CHR)) for CHR in nonsense]
# [('f', 1), ('a', 0), ('x', 5), ('o', 2), ('y', 4), ('k', 3)]
R = dict((CHR, 'afokyx'.index(CHR)) for CHR in nonsense)
于 2012-12-08T15:58:32.607 に答える
0

キーと値はどのようにディクショナリに設定されますか?

辞書があるとします:

d = {}

値をキーに設定するには、次のようにします。

d['key'] = 'value'

取得するため:

 d['key']

次のように、初期化中にキーと値のパースを設定できます。

 d = {'key':'value'}

しかし、あなたは辞書内包表記を扱っています。それは少し高度なことです:

R = {CHR : 'faxoyk'.index(CHR) for CHR in nonsense}

この行は次のように理解できます。

nonsense = 'faxoyk'
R = {}
for CHR in nonsense:
    R[CHR] = 'faxoyk'.index(CHR)

print R

すべての文字列にはメソッドがありindex()ます。

string.index()この文字列内の特定の文字のインデックスを返します。たとえば、文字列「faxoyk」の文字「x」のインデックスは 2、文字「f」のインデックスは 0 などです。これは、Python の反復可能なオブジェクトのインデックス付けが 0 から始まるためです。

于 2012-12-08T16:02:06.783 に答える