繁体   English   中英

如何在python 3.6中用f-string做字典格式?

[英]how to do a dictionary format with f-string in python 3.6?

我如何使用 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以上版本:

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

请介意单' ,双"在上面的语句作为引号把他们错了会给语法错误。

编辑:混淆旧的格式功能和新的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引用格式字符串中的所有出现,第二个人给出要填写的变量。

这会奏效。

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

如果nameobj的属性,则f'name is {obj[name]}' ,但对于此问题中的dict,您可以直接访问密钥f'name is {person["name"]}'

你有一个对象,这无助于理解事物的运作方式。 让我们构建一个更完整的例子。

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))

使用 f-string 对字典进行快速字符串化,无需手动键入键

我正在寻找一个简单的解决方案,以便将字典键、值对变成一个简单的对,而无需挖掘字典的每个键。

person = {'name': 'Jenne', 'age': 23}
stringified_dict = ' '.join([f'{k.capitalize()} {v}' for k,v in person.items()])
print(f'In a Variable -->   {stringified_dict}')

# function
def stringify_dict(dict_val:dict) -> str:
    return ' '.join([f'{k.capitalize()} {v}' for k,v in dict_val.items()])

stringified_dict = stringify_dict({'name': 'Jenne', 'age': 23})
print(f'Using Function -->  {stringified_dict}')


# lambda
stringify_dict = lambda dict_val: ' '.join([f'{k.capitalize()} {v}' for k,v in dict_val.items()])
stringified_dict = stringify_dict({'name': 'Jenne', 'age': 23})
print(f'Using Lambda -->    {stringified_dict}')

输出

In a Variable -->   Name Jenne Age 23
Using Function -->  Name Jenne Age 23
Using Lambda -->    Name Jenne Age 23

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM