使用python创建逐列字典

2024-09-28 19:22:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用python从csv创建列式字典?你知道吗

name, lastname, hobby
jhon, g, fishing
mike, a, boxing
tom, v, sking

输出应为:

name = {1 : 'jhon', 2:'mike', 3:'tom'}
lastname = {1 : 'g', 2:'a', 3:'v'}
hobby = {1 : 'fishing', 2:'boxing', 3:'sking'}

Tags: csvname字典miketom列式lastnamefishing
3条回答

这是一个基于矩阵转置的想法。你知道吗

你可以得到元组,但当然你可以转换成列表,集合,dicts或者其他什么。你知道吗

_ = raw_input()

m = []

for _ in range(3):
    m.append(raw_input().split(', '))
name, lastname, hobby = zip(*m)

print name
print lastname
print hobby

我会建议一些大致的建议:

# read the csv table
data = [x.strip().split(', ') for x in open('csv').readlines()] 

# transpose the table
data_transposed = map(list, zip(*data)) 

现在检查转置的数据行并创建所需的dict:

for row in data_transposed:
    # the dictionary name is the first element
    name = row[0]
    # the remaining elements are enumerated and put in a dict
    d = dict(enumerate(row[1:]))
    print name, "=", d

使用pandas可以很容易地获取列表或字典:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> csvfile = StringIO('''name, lastname, hobby
... jhon, g, fishing
... mike, a, boxing
... tom, v, sking''')
>>> 
>>> df = pd.read_csv(csvfile)
>>> dict(df['name'])
{0: 'jhon', 1: 'mike', 2: 'tom'}
>>> list(df['name'])
['jhon', 'mike', 'tom']

相关问题 更多 >