[英]empty List after converting csv file to dictionary
我已将 csv 文件转换为字典列表。
csvfile = './xyz.csv'
jsonArray = []
with open(csvfile, encoding='utf_8_sig') as csvf:
csvReader = csv.DictReader(csvf)
for row in csvReader:
jsonArray.append(row)
当我打印结果时,它看起来像这样(字典列表):
[
{
'Meter-id': 'W000001',
'January': '7.20',
'February': '7.2010',
'March': '7.34',
'April': '7.4870',
},
{
'Meter-id': 'W000002',
'January': '301,069.00',
'February': '318,592.000',
'March': '331,158.00',
'April': '345,322.000',
},
{
'Meter-id': 'K000001',
'January': '767,410.80',
'February': '784,932.700',
'March': '797,636.90',
'April': '812,111.000',
},...
]
但是当我尝试使用数组对字典进行分组时,数组似乎是空的:
resp = defaultdict(list)
KEY_MAP = {
'W': 'Warm',
'K': "Cold"
}
for key, group in itertools.groupby(jsonArray, key=lambda x: KEY_MAP.get(x["Meter-id"][0])):
for thing in group:
resp[key].append(thing)
我在这里做错了什么?
先感谢您
一个
您的代码和示例对我来说效果很好(缩进除外)。 也许您可以尝试没有groupby
的版本(特别是如果您的 json 数组未按组排序)
更新:
如何修复
IndexError: string index out of range
不要使用[0]
而是使用像[:1]
这样的切片来不引发异常并使用dict.get
的default
参数返回默认组:
resp = defaultdict(list)
for x in jsonArray:
group = KEY_MAP.get(x["Meter-id"][:1], 'Misc')
resp[group].append(x)
在每种方法中,output 为:
defaultdict(list,
{'Warm': [{'Meter-id': 'W000001',
'January': '7.20',
'February': '7.2010',
'March': '7.34',
'April': '7.4870'},
{'Meter-id': 'W000002',
'January': '301,069.00',
'February': '318,592.000',
'March': '331,158.00',
'April': '345,322.000'}],
'Cold': [{'Meter-id': 'K000001',
'January': '767,410.80',
'February': '784,932.700',
'March': '797,636.90',
'April': '812,111.000'}]})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.