使用字符串格式从字典中提取数据

时间:2013-07-16 08:18:14

标签: python dictionary string-formatting

如何使用字符串格式从字典中调用信息?

这是我到目前为止所做的尝试(可能非常糟糕......)

value = raw_input("Indicate a number: ")
print number_stats["chm%"] % (value,)

字典number_stats包含有关值“chm1”,“chm2”等的信息。

我收到一个关键错误,这让我感到困惑,因为项目chm1肯定存储在我的字典中。

有更好的方法吗?

4 个答案:

答案 0 :(得分:2)

执行number_stats["chm%"] % (value,)后,您首先执行number_stats["chm%"],然后将% (value,)应用于结果。您想要的是将%直接应用于字符串:

number_stats["chm%s" % (value,)]

请注意,您需要%s; %本身不是有效的字符串替换。

然而,可能有更好的方法。为什么你的字典有"chm1""chm2"之类的密钥,而不仅仅是数字本身就是密钥(即有密钥1和密钥2)?然后你可以做number_stats[value]。 (或者如果您从value阅读raw_input,则需要number_stats[int(value)]

答案 1 :(得分:2)

像这样使用。你必须在方括号内使用字符串格式

>>> number_stats={'a1': 1}
>>>
>>> print number_stats['a%s' % 1]
1
>>>

答案 2 :(得分:1)

print number_stats["chm%s" % (value)]

应该有用。

但你应该这样做:

print number_stats.get("chm%s" % (value), "some_default_value")

如果用户输入无效密钥,请避免崩溃。有关get方法的详细信息,请参阅this

答案 3 :(得分:0)

作为替代方案,您可以使用字符串format方法...

value = input("Indicate a number: ")
print number_stats["chm{}".format(value)]