如何在Python3.6中使用f-string实现字典格式?

如何在Python3.6中使用f-string实现字典格式?,python,dictionary,format,f-string,Python,Dictionary,Format,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'])) 这会奏效的 f'My name {person["name"]} and

如何使用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"]}'
如果
name
obj
的属性,
f'name是{obj[name]}
,但是对于这个问题中的dict,您可以直接访问键
f'name是{person[“name”]}
编辑:混淆了旧的格式函数和新的f-sting。补充澄清

字符串pkuphy posted是正确的,您必须使用引号才能访问字典:

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'我的名字{人[ [名] ] }和我的年龄{人[ [年龄] ] } /代码>

根据您的字典对给定字符串的贡献数,您可以考虑使用<代码> .Frase**(**DIT)< /代码>,以使其更可读,即使它没有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(我的名字{person[“name”]}和我的年龄{person[“age”]})
  • print(f“我的名字{person['name']}和我的年龄{person['age']}”)

  • 请注意上面语句中的单引号和双引号,因为将它们放错会导致语法错误。

    您只有一个对象,这无助于理解事物的工作原理。让我们构建一个更完整的示例

    person0={'name':'Jenne','age':23}
    person1={'name':'Jake','age':29}
    person2={'name':'John','age':31}
    地点=[‘那不勒斯’、‘马拉喀什’、‘开普敦’]
    打印(''我的名字{0[name]}和我的年龄{0[age]}),
    你的名字{1[name]}和你的年龄{1[age]},
    我最喜欢的位置{3[0]}''。格式(person0,person1,person2,places))
    
    您还可以从参数列表访问完整对象,如中所示

    print({2})。格式(person0,person1,person2,places))
    
    或选择属性,甚至级联:

    print({3.\uuuuuuuuu class\uuuuuuuuuu.\uuuuuuuuuu name\uuuuuuuuuuuu})。格式(person0,person1,person2,places))
    
    错误,这就是为什么我要问:我的名字{person[name]}和我的年龄{person[age]}'NameError:name'name'未定义您是否按照建议将姓名和年龄括在括号中?只需在整个字符串和项目之间使用不同的引号。如果您在双引号中引用字符串,请对键使用单引号。单引号和双引号在python中起着相同的作用。谢谢您怎么办?print('我的名字是{name}我的年龄是{age},我的薪水是{salary}..format(**person))这是
    str.format()
    方法,f-string和str.format的不同之处在于如何执行索引查找,因为您必须在
    f-string
    中引用字典中的键,但在
    str.format()中从索引值自动转换为字符串
    问题是关于Python3.6 f-strings的,虽然你清楚地解释了你的答案,但这与被问到的问题无关。没错,我最近在我自己的一些作品中添加了一个f-string后写了这样的评论:
    f'some text{mydict['mydumbmission']}more text'
    vs
    f'some text{mydict[“thisworks]}更多的文本“
    和视觉上的错误对我来说是很难发现的(也许我只是垃圾),所以我喜欢字符串,这是一个地方,在那里旧的风格感觉更加轻盈,像我这样的小飞象犯下另一个错误的机会更少。你可以使用
    格式映射
    功能,像这样
    打印('我的名字是{name},我的年龄是{age}..format\u map(person))
    @dbow
    .format\u map(dict)
    .format(**dict)
    之间有什么区别吗?