Как я могу сделать этот формат с помощью 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']))
Как я могу сделать этот формат с помощью 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']))
Ну, нужна цитата для словарного ключа.
f'My name {person["name"]} and my age {person["age"]}'
В зависимости от количества вкладов, внесенных вашим словарем в заданную строку, вы можете использовать .format(**dict)
вместо этого, чтобы сделать его более читаемым, даже если он не имеет четкой элегантности строки f.
>>> 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.
В то время как эта опция является ситуационной, вам может понравиться избегать резких цитат и двойных кавычек
Оба приведенных ниже утверждения будут работать на Python 3.6 и более поздних версиях:
print(f'My name {person["name"]} and my age {person["age"]}')
print(f"My name {person['name']} and my age {person['age']}")
Пожалуйста, обратите внимание на одинарную '
и двойную "
кавычку в приведенных выше утверждениях, как размещение их неправильно будет давать ошибку синтаксиса.
Это будет работать.
f'My name {person["name"]} and my age {person["age"]}'
если name
является свойством obj
, f'name is {obj[name]}'
, но для dict, как и в этом вопросе, вы можете напрямую обращаться к клавише f'name is {person["name"]}'
.
Изменить: путайте старую функцию формата и новые f-stings. Добавлено уточнение.
Строка pkuphy отправлена правильно, вам нужно использовать кавычки для доступа к словарю:
f'My name {person["name"]} and my age {person["age"]}'
Ваша исходная строка работает для str.format()
-функции:
>>> 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
ссылается на все вхождения в форматированной строке, второй - на заполнение переменной.
у вас есть только один объект, который не помогает понять, как все работает. давайте построим более полный пример.
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))