web-dev-qa-db-ja.com

python 3.6でf-stringを使用して辞書形式を行う方法

python 3.6 F-String?

person = {'name': 'Jenne', 'age': 23}

print('My name {0[name]} and my age {1[age]}'.format(person, person))
print('My name {0} and my age {1}'.format(person['name'], person['age']))
17
Abou Menah

さて、辞書キーの引用が必要です。

f'My name {person["name"]} and my age {person["age"]}'

18
M. Leung

辞書が特定の文字列に与える貢献の数に応じて、f文字列の簡潔な優雅さを持たなくても、代わりに.format(**dict)を使用して読みやすくすることを検討できます。

>>> person = {'name': 'Jenne', 'age': 23}
>>> print('My name is {name} and my age is {age}.'.format(**person))

My name is Jenne and my age is 23.

このオプションは状況に応じて異なりますが、引用符や二重引用符のうなり声を避けたい場合があります。

11
Mark Langford

以下のステートメントは両方ともPython 3.6以降で動作します:

  1. print(f'My name {person["name"]} and my age {person["age"]}')
  2. print(f"My name {person['name']} and my age {person['age']}")

単一の'およびdouble "上記のステートメント内の引用符が間違っていると、構文エラーが発生します。

3
Ashwani Singh

編集:古いformat-functionと新しいf-stingを混同しました。説明を追加しました。

投稿された文字列pkuphyは正しいです。辞書にアクセスするには引用符を使用する必要があります。

_f'My name {person["name"]} and my age {person["age"]}'
_

元の文字列はstr.format()- functionで機能します:

_>>> person = {'name': 'Jenne', 'age': 23}
>>> print('My name is {person[name]} and my age is {person[age]}.'.format(person=person))

My name is Jenne and my age is 23.
_

最初のpersonはformat-string内のすべての出現を参照し、2番目は入力する変数を提供します。

2

これは機能します。

f'My name {person["name"]} and my age {person["age"]}'

nameobjのプロパティである場合、f'name is {obj[name]}'、ただしこの質問のような辞書の場合、キーf'name is {person["name"]}'

1
pkuphy

オブジェクトは1つだけであり、物事の仕組みを理解する助けにはなりません。より完全な例を作成しましょう。

person0 = {'name': 'Jenne', 'age': 23}
person1 = {'name': 'Jake', 'age': 29}
person2 = {'name': 'John', 'age': 31}
places = ['Naples', 'Marrakech', 'Cape Town']

print('''My name {0[name]} and my age {0[age]}, 
your name {1[name]} and your age {1[age]}, 
my favourite place {3[0]}'''.format(person0, person1, person2, places))

次のように、引数リストから完全なオブジェクトにアクセスすることもできます

print('{2}'.format(person0, person1, person2, places))

または、カスケード、さらには属性を選択します。

print('{3.__class__.__name__}'.format(person0, person1, person2, places))
0
mariotomo