致所有惊人的程序员,如何对defaultdict(list)进行排序,使得所有列表都基于一个键进行排序?
我想知道如何排序defaultdict(列表)集合,使一个列表的排序顺序(例如defaultdict(list)[list1])应用于其余列表以及。也许一个简短的描述/例子更有用。如果有更好的方法来做到这一点,我也是耳熟能详。
示例问题: 我有一个包含许多列(不同数据类型)和标题行的.csv文件。使用defaultdict(名单)我使用导入.csv文件:
data = defaultdict(list)
Reader = csv.DictReader(open(FilePath, 'r'))
for (k,v) in row.items():
data[k].append(v)
现在我离开我了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>)']
每个列表(VARA ,varB,varC)具有完全相同的项目数量。假设varA没有排序,我将如何基于varA排序所有数据条目。
我知道
sortOrder = [i[0] for i in sorted(enumerate(data['varA']), key=lambda x:x[1])]
返回与索引的正确顺序列表。有没有办法将此命令应用于其他列表。
注:我读的地方,
data[varB] = data[varB][sortOrder]
data[varC] = data[varC][sortOrder]
会给我正确的答案,因为中将sortOrder是一个数组(它不是,上面产生的列表)。问题是我如何不使用numpy将sortOrder列表转换为数组。
您的示例代码缺少的东西; 'row.items()'从哪里来?它是用于csv中的行吗? – TessellatingHeckler
嘿,哥们,排。items()来自csv模块,与每个行项目关联的键和值对一样。 – lwm