我必须插入具有这种语法的字典列表(我有超过6500个字典,像这3个字典):
0: {208271891: {'bra': 'Solarmax',
'bri': 4,
'eur': 95.4,
'max': 1980,
'nam': '2000S',
'pan': {'bra': 'Sanyo',
'bri': 3,
'eff': 16,
'h': 861,
'hea': 50,
'mni': 1,
'mnm': 'free standing',
'n': 7,
'nam': 'HDE1 230',
'slo': 35,
't': -0.3,
'w': 1610,
'wp': 230},
'pha': 1,
'rat': 0.81,
'wp': 1610}},
1: {208271900: {'bra': 'Solarmax',
'bri': 4,
'eur': 95.4,
'max': 1980,
'nam': '2000S',
'pan': {'bra': 'Sanyo',
'bri': 3,
'eff': 16,
'h': 861,
'hea': -40,
'mni': 1,
'mnm': 'free standing',
'n': 9,
'nam': 'HDE1 230',
'slo': 30,
't': -0.3,
'w': 1610,
'wp': 230},
'pha': 1,
'rat': 1.05,
'wp': 2070}},
2: {208271892: {'bra': 'Solarmax',
'bri': 4,
'eur': 95.4,
'max': 1980,
'nam': '2000S',
'pan': {'bra': 'Sanyo',
'bri': 3,
'eff': 16,
'h': 861,
'hea': 50,
'mni': 1,
'mnm': 'free standing',
'n': 9,
'nam': 'HDE1 230',
'slo': 30,
't': -0.3,
'w': 1610,
'wp': 230},
'pha': 1,
'rat': 1.05,
'wp': 2070}}
我试图用dict.pop()和'del'删除密钥,但收到此错误:'TypeError:'int'对象不支持项目删除'。
slMetadata = {}
for row in metadatas: #metadatas coming from mysql
mid = int(row['met_id'])
slMetadata.update(mid = mid)
bsInv = {
mid:
{
'wp' : wp,
'bra': str(row['invbraname']),
'bri': int(row['inm_bra_id']),
'nam': str(row['inm_name']),
'pha': int(row['inm_phases']),
'max': int(row['inm_maximal_power']),
'eur': float(row['inm_euro_efficiency']),
'pan':
{
'n' : int(row['inv_pan_numbers']),
'hea': int(row['inv_pan_heading']),
'slo': int(row['inv_pan_slope']),
'mni': int(row['inv_mnt_id']),
'mnm': str(row['mnt_name']),
'bra': str(row['panbraname']),
'bri': int(row['pan_bra_id']),
'nam': str(row['pan_name']),
'wp' : int(row['pan_wc']),
'eff': int(row['efficiency']),
't' : float(row['coefficient_p']),
'w' : int(row['pan_width']),
'h' : int(row['pan_height'])
}
}
}
i = 0
dictToInsert = {}
for dic in slMetadata:
dictToInsert[i] = slMetadata[dic]
i += 1
if len(dictToInsert) > 0:
insertion = dbCollection.insert_many(dictToInsert)
我想要的是将所有这些字典插入mongoDb中,但出现以下错误:bson.errors.InvalidDocument:文档必须仅具有字符串键,键为0。
我完全了解并知道我无法使用“ int”键插入到mongoDb中。但是还有什么选择呢?
谢谢。
答案 0 :(得分:0)
Try
dictToInsert[str(i)] = slMetadata[dic]
instead of
dictToInsert[i] = slMetadata[dic]