对字典进行排序并将其写入CSV fi

2024-05-19 12:37:06 发布

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

我有一个以元组为键,列表为值的字典

myDict = {
 (1, 9078752378): [('Smith', 'Bob'), 'Head guard'],
 (2, 9097615707): [('Burdell', 'George'), 'Lifeguard'],
 (3, 9048501430): [('Smith', 'Amanda'), 'Lifeguard'],
 (4, 9026450912): [('Brown', 'John'), 'Lifeguard'],
 (5, 9027603006): [('Flowers', 'Claudia'), 'Lifeguard'],
 (6, 9055520890): [('Smith', 'Brown'), 'Head guard'],
 (7, 9008197785): [('Rice', 'Sarah'), 'Lifeguard'],
 (8, 9063479070): [('Dodd', 'Alex'), 'New Lifeguard'],
 (9, 9072301498): [('Sparrow', 'Jack'), 'New Lifeguard'],
 (10, 9084389677): [('Windsor', 'Harry'), 'New Lifeguard']
}

我完全被困在如何把这本字典按顺序写入csv文件 用这种格式写的

^{pr2}$

……以此类推到9

请帮忙!!!在


Tags: 列表new字典johnheadmydictbob元组
2条回答

假设您的格式是一致的,这应该可以做到:

with open('youfile.csv', 'w') as f:
  for k,v in sorted(myDict.iteritems()):
    f.write('{} {} {} {} {}\n'.format(k[0], k[1], v[0][0], v[0][1], v[1]))

我应该警告您输出格式中可能存在的问题,如果需要再次解析,您需要引用值,或者使用不同的分隔符,例如:

1 9078752378 Smith Bob "Head guard"

with open("CSV", 'w') as f:
   f.write('\n'.join([",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())]))

解释-

sorted(myDict.items())将根据键对字典进行排序。在

for (a, b), ((c, d), e) in sorted(myDict.items())将解压您的值。在

",".join(map(str,[a,b,c,d,e]))将用逗号连接未打包的值。在

[",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())]是以上逗号连接值的列表理解。在

'\n'.join([",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())]将用换行符连接上述列表。在

相关问题 更多 >