Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用字符串插值在字典中获取列表_Python_String_Dictionary_String Interpolation - Fatal编程技术网

Python 使用字符串插值在字典中获取列表

Python 使用字符串插值在字典中获取列表,python,string,dictionary,string-interpolation,Python,String,Dictionary,String Interpolation,我试图通过字符串插值从字典中获取一个值 字典中有一些数字和数字列表: d = { "year" : 2010, \ "scenario" : 2, \ "region" : 5, \ "break_points" : [1,2,3,4,5] } 是否可以在字符串插值中引用列表,或者是否需要为每个列表标识唯一的键 以下是我尝试过的: str = "Year = %(year)d, \ Scenario = %(scenario)d, \ Region = %(region)d, \ Break

我试图通过字符串插值从字典中获取一个值

字典中有一些数字和数字列表:

d = { "year" : 2010, \
"scenario" : 2, \
"region" : 5, \
"break_points" : [1,2,3,4,5] }
是否可以在字符串插值中引用列表,或者是否需要为每个列表标识唯一的键

以下是我尝试过的:

str = "Year = %(year)d, \
Scenario = %(scenario)d, \
Region = %(region)d, \
Break One = %(break_points.0)d..." % d
我还尝试了
%(断点[0])d
,和
%(断点{0})d


这是可能的,还是我需要给它们密钥并将它们保存为字典中的整数?

这在新样式的格式中是可能的:

print "{0[break_points][0]:d}".format(d)

调用此方法的字符串可以包含由大括号
{}
分隔的文本或替换字段。每个替换字段包含位置参数的数字索引或关键字参数的名称

字段名称本身以数字或关键字开头。如果是数字,则表示位置参数;如果是关键字,则表示命名关键字参数

arg_名称后面可以跟任意数量的索引或属性表达式。形式为
'.name'
的表达式使用
getattr()
选择命名属性,而形式为
'[index]'
的表达式使用
\uuu getitem\uuuuu()
执行索引查找


这可以通过新样式的格式实现:

print "{0[break_points][0]:d}".format(d)

调用此方法的字符串可以包含由大括号
{}
分隔的文本或替换字段。每个替换字段包含位置参数的数字索引或关键字参数的名称

字段名称本身以数字或关键字开头。如果是数字,则表示位置参数;如果是关键字,则表示命名关键字参数

arg_名称后面可以跟任意数量的索引或属性表达式。形式为
'.name'
的表达式使用
getattr()
选择命名属性,而形式为
'[index]'
的表达式使用
\uuu getitem\uuuuu()
执行索引查找



不相关,但丢失反斜杠,因为它在StackOverflow上更具可读性。代码中不是这样。@bozdoz Python允许使用
”多行字符串文字。更好的做法?@Zoidberg字符串文字中的反斜杠有一个作用-它们删除了使用
时出现的换行符。这里的替代方法是将字符串放在括号中,并使用神奇的自动关联。我不能在评论中清楚地说明它:)不相关,但失去了反斜杠,因为它在StackOverflow上更具可读性。代码中不是这样。@bozdoz Python允许使用
”多行字符串文字。更好的做法?@Zoidberg字符串文字中的反斜杠有一个作用-它们删除了使用
时出现的换行符。这里的替代方法是将字符串放在括号中,并使用神奇的自动关联。我不能在评论中清楚地说明这一点:)太棒了。这两个字段都发生了什么?第一个字段将整个dict作为第一个(index
0
)字段,并将其索引两次(如
field0['break_points'][0]
)。Second将dict项作为单个命名字段获取,即作为
.format(break_points=[1,2,3,4,5],region=5,…)
。然后取
断点
字段的第一个元素。
:d
是与旧printf样式
%d
相同的“十进制整数”表示形式。这就是让我困惑的地方。:)我想它是在引用字典。谢谢令人惊叹的。这两个字段都发生了什么?第一个字段将整个dict作为第一个(index
0
)字段,并将其索引两次(如
field0['break_points'][0]
)。Second将dict项作为单个命名字段获取,即作为
.format(break_points=[1,2,3,4,5],region=5,…)
。然后取
断点
字段的第一个元素。
:d
是与旧printf样式
%d
相同的“十进制整数”表示形式。这就是让我困惑的地方。:)我想它是在引用字典。谢谢