如何对defaultdict(list)进行排序,以便所有列表都基于一个键进行排序?
对于所有优秀的程序员 我想知道如何对defaultdict(list)集合进行排序,以便将一个列表(例如defaultdict(list)[list1])的排序顺序也应用于其余列表。也许简短的描述/示例更有用。如果有更好的方法,我也会洗耳恭听 示例问题: 我有一个.csv文件,由许多列(不同的数据类型)和一条标题线组成。使用defaultdict(列表)导入.csv文件时使用:如何对defaultdict(list)进行排序,以便所有列表都基于一个键进行排序?,list,python-2.7,sorting,csv,List,Python 2.7,Sorting,Csv,对于所有优秀的程序员 我想知道如何对defaultdict(list)集合进行排序,以便将一个列表(例如defaultdict(list)[list1])的排序顺序也应用于其余列表。也许简短的描述/示例更有用。如果有更好的方法,我也会洗耳恭听 示例问题: 我有一个.csv文件,由许多列(不同的数据类型)和一条标题线组成。使用defaultdict(列表)导入.csv文件时使用: data = defaultdict(list) Reader = csv.DictReader(open(FileP
data = defaultdict(list)
Reader = csv.DictReader(open(FilePath, 'r'))
for (k,v) in row.items():
data[k].append(v)
现在我只剩下一个名为“data”的defaultdict(列表)结构:
data = [('varA', <list of n time.struct_time items>),
('varB', <list of n other data type items>)',
('varC', <list of n other data type items>)']
返回索引顺序正确的列表。是否有方法将此顺序应用于其他列表
注:我在某个地方读到
data[varB] = data[varB][sortOrder]
data[varC] = data[varC][sortOrder]
如果sortOrder是一个数组(它不是,上面的结果是一个列表),那么请给出正确的答案。问题是,在不使用numpy的情况下,如何将排序器列表转换为数组。我想我应该:
- 将列表VarA与数字1到n配对,以便:
变成[b,a,c]
[(1,b)、(2,a)、(3,c)]
- 按值对新列表进行排序,以便:
[(2,a)、(1,b)、(3,c)]
- 解开它们,数字的结束方式是其他列表的顺序:
如何将列表按顺序排列:选择第二项、第一项、第三项[2,1,3]
- 对于每一行,将该顺序中的项目放入新列表中
sort_holder = [(index, item) for (index, item) in enumerate(data['VarA'])]
sort_holder = sorted(sort_holder, key = lambda pair: pair[1])
new_order = [pair[0] for pair in sort_holder]
for var, row in data.items():
new_list = []
for index in new_order:
new_list.append(row[index])
data[var] = new_list
您的示例代码缺少某些内容;
row.items()
来自哪里?csv中的行是否为:
?嘿,伙计,row.items()来自csv模块,与每个行项目关联的键和值对也是如此。这足以回答我的问题。感谢您的快速回复!
sort_holder = [(index, item) for (index, item) in enumerate(data['VarA'])]
sort_holder = sorted(sort_holder, key = lambda pair: pair[1])
new_order = [pair[0] for pair in sort_holder]
for var, row in data.items():
new_list = []
for index in new_order:
new_list.append(row[index])
data[var] = new_list