Pythonic的做法是什么?

时间:2015-06-24 12:57:34

标签: python

我想要一些数据的dicts列表,我尝试这样做:

dataList = ['Jim    5656    qwgh', 'Tim    5833    qwgh']

dataDictList = [ {'name': data[0], 'sknum': data[1]} for data.split('\t') in dataList ]

我得到语法错误,我猜是因为'data.split('\ t')'不能以某种方式工作。

我可以用下面的Pythonic方式做到这一点,但这是我不想做的事情。

dataDictList = []    

for d in dataList:
    data = d.split('\t')
    dataDictList.append({ 'name': data[0], 'sknum': data[1] })

我想知道上面部分显示语法错误的原因。

3 个答案:

答案 0 :(得分:6)

真的想要一个单行:

>>> dataList = ['Jim    5656    qwgh', 'Tim    5833    qwgh']
>>> [dict(zip(['name', 'sknum'], s.split())) for s in dataList]
[{'name': 'Jim', 'sknum': '5656'}, {'name': 'Tim', 'sknum': '5833'}]

答案 1 :(得分:1)

如何使用map和split

<强>码

dataList = ['Jim    5656    qwgh', 'Tim    5833    qwgh']
dataDictList = [ {'name': data[0], 'sknum': data[1]} for data in map(str.split, dataList)]
dataDictList
[{'name': 'Jim', 'sknum': '5656'}, {'name': 'Tim', 'sknum': '5833'}]

答案 2 :(得分:0)

怎么样:

dataList = ['Jim    5656    qwgh', 'Tim    5833    qwgh']
splitDataList = [data.split('\t') for data in dataList ]

dataDictList = [ {'name': data[0], 'sknum': data[1]} for data in splitDataList ]