从函数中订购返回的数据

时间:2014-05-08 16:01:55

标签: python

我有一个带2个参数的函数; dict- _tInput和list- _order。

目的是能够订购返回的数据进行打印:

tOrderReq = [1, 4, 5, 2]
tReturnData = tOut(hInput[0], (tOrderReq))
print("%s %s %s %s" % tReturnData) 

但是我收到以下错误:

Traceback (most recent call last):
File "C:\local\mdev.py", line 76, in <module>
TypeError: not enough arguments for format string

我不明白我需要改变什么来让它工作,我怀疑这是一个相当基本的东西,通过我的新手Python知识和我对元组,列表和dicts的理解。功能如下 - 顺便提一下,如果有关于如何改进此代码的任何提示,那么我就是全部的耳朵。

def tOut(_tInput, _order=[]):
    _tOutput = []
    _tOutput.append(_tInput['id'])
    _tOutput.append(_tInput['created_at'].encode('utf-8'))
    _tOutput.append(_tInput['text'].encode('utf-8'))
    _tOutput.append(_tInput['user']['id'])    
    _tOutput.append(_tInput['user']['screen_name'].encode('utf-8'))
    _tOutput.append(_tInput['user']['name'].encode('utf-8')) 

    _tReturn = []
        for x in _order:
        _tReturn.append(_tOutput[x])

    return (_tReturn)

非常感谢

1 个答案:

答案 0 :(得分:0)

IIUC,你的问题是Python需要一个带%的元组 - 插值:

>>> tReturnData = [1,2,3,4]
>>> print("%s %s %s %s" % tReturnData)
Traceback (most recent call last):
  File "<ipython-input-13-a0f54ded128d>", line 1, in <module>
    print("%s %s %s %s" % tReturnData)
TypeError: not enough arguments for format string

>>> print("%s %s %s %s" % tuple(tReturnData))
1 2 3 4

如果(你似乎是)你正在使用Python 3,你可以简单地写

>>> print(*tReturnData)
1 2 3 4

或使用str.format(这是更精细控制的首选现代风格,我承认我们不会在这里使用):

>>> print("{} {} {} {}".format(*tReturnData))
1 2 3 4