Python在dict中使用%s来调用值

时间:2015-08-20 17:50:02

标签: python dictionary

我们如何使用类似以下的dict?

dict[%s] % variable

对于那些对我要做的事情感兴趣的人,我有三个要点:

    dict_1 = {'a':'123', 'b':'234', 'c':'345'}
    dict_2 = {'d':'456', 'e':'567', 'f':'678'}
    dict_3 = {'a':'e', 'b':'d', 'c':'f'}

我有一个功能,我需要输入类似的东西:

    function(dict_1['a'], dict_2['e']) #according to dict_3 that 'a' is paired with 'e'.

编辑:

我试图写一个for循环来遍历所有的dicts并让它们根据dict_3将dict_1和dict_2对配对到函数中。看着你们回答后,我实际上不需要%s的东西。这就是你早上在没有咖啡的情况下尝试编码的情况大声笑。

最后,以下是我想做的事,谢谢大家!:

    for i in dict_1:
         results = function(dict_1[i],dict_2[dict_3[i]]

5 个答案:

答案 0 :(得分:5)

如果我收集的内容是正确的,那么你几乎已经赚了钱。你可以这样写:

dict["%s" % variable]

然而,问题的一个问题是如果你有类似的东西:

   d = {3 : 'hello'}
   my_key = 3
   d['%s' % my_key]

这会因KeyError

而失败

无论如何,使用它是一种迂回的方式。你可以写:

dict[otherdict['a']]

答案 1 :(得分:3)

.sidebars:last-child > .side-box

应该有用。

所以我会做类似

的事情
function(dict_1['a'], dict_2[dict_3['a']])

在这里使用%运算符对我来说没有多大意义,因为你没有尝试生成带有一些静态数据和可变插入值的字符串。

答案 2 :(得分:2)

因为%运算符的评估优先于[]运算符。如果dict["%s" % variable]已经是字符串,那么您应该dict[variable]或更轻松variable

答案 3 :(得分:2)

如果您的变量是字符串,则直接将它们用作键

dict[variable]

对于您要执行的功能,您可以致电

function(dict1[variable], dict2[dict3[variable]])

如果您尝试为dict3中的每个键和值调用此函数,您可能只想迭代dict3。

for key, val in dict3.items():
  function(dict1[key], dict2[values])

有关将这些结果收集到列表中的更多pythonic方法

func_results = [function(dict1[key], dict2[val]) for key, val in dict3.items()]

最后一件事。如果您在此函数调用中只有dict3,则只需要一个元组列表:

arg_list = [('a', 'e'), ('b', 'd'), ('c', 'f')]
func_results = [function(dict1[arg1], dict2[arg2]) for arg1, arg2 in arg_list]

答案 4 :(得分:1)

请注意,如果键是整数而不是字符串,则必须执行以下操作:

dict[int("%d" % some_integer)]