Python dict调用函数作为值

时间:2013-08-08 23:19:04

标签: python json function loops

我正在使用返回的json在python中创建一个dict。

我希望成为shortuuid的其中一个值,所以我将一个函数作为值。 我希望调用该函数,并将值替换为该函数返回的内容。

这是对的吗?

        tvMSG = {'fromEMAIL': uEmail, 'toCHANNELID': channelID, 'timeSENT': uTime}
             for msgkey, subdict, instakey in (('profilePIC', 'user', 'profile_picture'),
                         ('userNAME', 'user', 'username'),
                         ('msgBODY', 'caption', 'text'),
                         ('mainCONTENT','images', 'standard_resolution',)
                         ('tvshowID', shortuuid.uuid())):



   this is the key/value in question:
            ('tvshowID', shortuuid.uuid())):

这是我得到的错误:

        TypeError: 'tuple' object is not callable

如果不能如何使其发挥作用?

2 个答案:

答案 0 :(得分:4)

错误来自缺少的逗号。这一行:

('mainCONTENT','images', 'standard_resolution',)

实际应该是:

('mainCONTENT','images', 'standard_resolution'),

这就是您收到错误'tuple' object is not callable的原因,您正在调用('any','tuple')('arguments')

答案 1 :(得分:0)

感谢提示@ThierryJ。

  tvMSG = {'fromEMAIL': uEmail, 'toCHANNELID': channelID, 'timeSENT': uTime, 'tvshowID: shortuuid.uuid()}
         for msgkey, subdict, instakey in (('profilePIC', 'user', 'profile_picture'),
                     ('userNAME', 'user', 'username'),
                     ('msgBODY', 'caption', 'text'),
                     ('mainCONTENT','images', 'standard_resolution')):

无需进行任何迭代。 我刚把这个调用从循环中取出并放在循环上面的变量中。