gpt4 book ai didi

将列表转换为类字段的Pythonic方法

转载 作者:行者123 更新时间:2023-12-01 01:36:52 24 4
gpt4 key购买 nike

有没有一种更Pythonic的方式来将多个列表的内容分配到多个结构中的字段中?下面的示例使用 pandas.dataframe

import pandas

# INPUT
files = ['file1.csv','file2.csv','file3.csv','file4.csv', 'file5.csv']
names = ['Cold', 'Hot','Hotter','Hottest','Hottestest']
lines = ['-','-',':','-',':']
colors = ['b','r','r','y','y']
marker = ['','','','o','']

cases = []
for idx,case in enumerate(files):
cases.append(pandas.read_csv(fname))
cases[idx].name = names[idx]
cases[idx].color = colors[idx]
cases[idx].marker = marker[idx]
cases[idx].lines = lines[idx]

最佳答案

编辑:使用 Adrian's answer我们可以使用 assign**kwargs 来简化它:

import pandas

# INPUT
file_map = {
'file1.csv': {
'name': 'Cold',
'lines': '-',
'colors': 'b',
'marker': ''
},
# ...etc...
}

cases = []
for filename, attrs in file_map.iteritems():
cases.append(pandas.read_csv(filename).assign(**attrs))
<小时/>

旧答案:

看起来字典的字典会更好。

import pandas

# INPUT
file_map = {
'file1.csv': {
'name': 'Cold',
'lines': '-',
'colors': 'b',
'marker': ''
},
# ...etc...
}

cases = []
for filename, attrs in file_map.iteritems():
case = pandas.read_csv(filename)
for attr, value in attrs.iteritems():
setattr(case, attr, value)
cases.append(case)

如果您想更加严格,您还可以创建 submaps 类或 collections.namedtuple 实例。

关于将列表转换为类字段的Pythonic方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52320842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com