【问题标题】:Passing a dictionary into a string in python将字典传递给python中的字符串
【发布时间】:2014-01-21 22:16:22
【问题描述】:
我正在尝试使用键值对格式化字符串,其中字符串中的变量修饰符由键的名称引用。
我该怎么做呢?这是我的代码:
given_string2 = "I'm %(name)s. My real name is %(nickname)s, but my friends call me %(name)s."
def sub_m(name, nickname):
return given_string2 %{name:nickname}
print sub_m("Mike","Goose")
【问题讨论】:
标签:
python
string
dictionary
【解决方案1】:
你的问题在这里:given_string2 % {name: nickname}
这行得通:
>>> "I'm %(name)s. My real name is %(nickname)s, but my friends call me %(name)s." % {'name': "Mike", 'nickname': "Goose"}
"I'm Mike. My real name is Goose, but my friends call me Mike."
【解决方案2】:
您可以简单地使用位置参数,如下所示:
given_string2 = "I'm {0}. My real name is {1}, but my friends call me {0}."
def sub_m(name, nickname):
return given_string2.format(name, nickname)
print sub_m("Mike","Goose")
{} 格式化程序指的是应用于字符串的 format() 方法的 0 索引位置参数。
【解决方案3】:
我认为您创建字典的方式并不像您认为的那样。 %(name) 和 %(nickname) 占位符必须引用您传递的字典中的有效键。因此,您需要类似:
'the quick brown %(animal)s jumped over the %(adjective)s dog' % {"animal": "fox", "adjective": "lazy"}
您拥有的是一个字典,其键为“Mike”,值为“Goose”。如果您将原始字符串中的 %(name)s 和 %(nickname)s 更改为 %(Mike)s,您将被 Goose 替换 3 次。
【解决方案4】:
def sub_m(name, nickname)
print "I'm %s. My real name is %s, but my friends call me %s" % (name, nickname, name)