二重分割せずに、解析されていない文字列のリストから辞書内包表記を構築することは可能ですか?

merlin2011

次の辞書の理解を考慮してください。

foo = ['super capital=BLUE', 'super foo=RED']
patternMap = {x.split("=")[0]:x.split("=")[1] for x in foo}

かなり簡潔ですが、x.split('=')2回電話する必要があるという事実は好きではありません次のことを試しましたが、構文エラーが発生します。

patternMap = {y[0] : y[1] for y in x.split('=') for x in foo}

最初の2行で、x.split()2回電話したり、冗長にしたりせずに結果を得る「適切な」方法はありますか?

スティーブンラウフ

次のdictようなタプルを使用して、にまっすぐ進みます。

コード:

patternMap = dict(x.split('=') for x in foo)

テストコード:

foo = ['super capital=BLUE', 'super foo=RED']
patternMap = {x.split("=")[0]: x.split("=")[1] for x in foo}
print(patternMap)

patternMap = dict(x.split('=') for x in foo)
print(patternMap)

# or if you really need a longer way
patternMap = {y[0]: y[1] for y in (x.split('=') for x in foo)}
print(patternMap)

結果:

{'super capital': 'BLUE', 'super foo': 'RED'}
{'super capital': 'BLUE', 'super foo': 'RED'}
{'super capital': 'BLUE', 'super foo': 'RED'}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ