定义一个方法,保存多个字典到csv中

如何定义一个方法将多个字典保存到csv中:
其中:
1、字典的值数量是随机的,
2、字典值的规律是:第一个数是最低价1,第二个是最高价1,第三个是最低价2,第四个是最高价2,第五个是最低价3依次类推(不知道最多可能出现几个)
3、当他的值为 “ ” 的时候,则默认填null

data_dict = {             # 这个是其中一个字典的例子
    'RainRider 男士雨衣防水透气雨具耐用牛津防雨夹克外套和裤子': ['¥454.23', '', '¥450.01', '', '¥449.11', '', '¥450.77', '', '¥455.57', ''],
     '雨衣(夹克 + 裤子),EVA 超轻防水防护雨衣防雨装备工作服适合男士女士': ['¥277.97', ''],
     'Remelon 2 件套女式西装外套带裤子深 V 长袖修身荷叶边裙子 商务西装': ['¥368.37', '', '¥367.61', '', '¥369.72', '', '¥368.18', '', '¥348.09', '', '¥368.37', '', '¥365.17', '', '¥349.76', '', '¥367.22', '', '¥366.01', '', '¥369.33', '', '¥369.97', '', '¥376.56', '', '¥376.43', '', '¥377.65', ''],
     'Amazing Supply 一次性*裤防水白色裤子PPE 工作服。': ['¥233.00', '', '¥292.18', '', '¥305.61', '', '¥328.32', ''],
     '女式性感 2 件套商务服装 V 领短袖褶皱下摆荷叶边上衣裤子套装': ['¥347.90', '', '¥347.20', '', '¥347.20', '', '¥347.20', '', '¥347.13', '', '¥343.81', ''],
     'Cutter & Buck 男式裤子': ['¥372.34', '', '¥454.23', ''], 'Le Suit 女式娇小弹力绉纱单扣青果领长裤套装': ['¥1,279.52', ''],
     'Snickers Snickers Hose': ['¥583.76', '', '¥612.64', '', '¥573.38', '', '¥693.09', '', '¥612.64', ''],
     'Mascot 12355-630-09-82C50 裤子 Biloxi 尺码 L82cm/C50 黑色': ['¥361.44', ''],
     'Snickers 士力克斯 321118120 裤子,带皮套袋 CoolTwill 尺寸 120 灰色': ['¥730.15', ''],
     'Mascot 03179-010-09-82C43 裤子 Cadiz 尺寸 L82cm/C43黑色': ['¥500.90', ''],
     'Ultra-Lite 雨衣带裤子男式女式防水防雨服,适合运动(*蓝,L 码)': ['¥275.35', ''],
     '防雨服重型 PVC 工作服男式防雨装备*夹克和裤子雨衣': ['¥393.58', '', '¥391.79', ''],
     '男式女式雨衣防水重型钓鱼防雨装备夹克和裤子': ['¥652.36', '', '¥656.14', ''],
     'Kelendle 电锯围裙裤子锁骨防水除草围裙带口袋和反光条纹开叉护腿修剪器*锁适用于除草刷切割器花园工作围裙围嘴 50 英寸(约 127 厘米)长': ['¥236.07', '']
     }

例子:

img

目标输出结果展示:

img

import csv

dic1 = {'a':['1','','2','','4'],
        'b': ['1', '4', '2', '', '8','2','5','6']}
dic2 = {'f':['4','2','2','5','4'],
        'g': ['1', '4', '2', '', '4']}
dic1.update(dic2)
ml = max(dic1.values(), key=lambda x: len(x),)
header = ['name']
for i in range(1, len(ml) //2+1):
    header.extend([f'最低价{i}', f'最高价{i}'])
ldd = [[k] + v + [''] * (len(ml) - len(v)) for k, v in dic1.items()]
with open("test.csv",'w',newline='', encoding='utf-8') as f:
    wri = csv.writer(f, quoting=csv.QUOTE_MINIMAL)
    wri.writerow(header)
    wri.writerows(ldd)

字典的键会重复吗? 如果不重复, 这么处理

import pandas

dic1 = {'a':['1','','2','','4'],
        'b': ['1', '4', '2', '', '8','2','5','6']}

dic2 = {'f':['4','2','2','5','4'],
        'g': ['1', '4', '2', '', '4']}
#  列表预处理
dic2.update(dic1)
lst1 = []
for k,v in dic2.items():
    lst_temp = [k]
    lst_temp.extend(v)
    lst1.append(lst_temp)

for i in range(len(lst1)):
    for j in range(len(lst1[i])):
        if lst1[i][j] == "":
            lst1[i][j] = "null"

# 用pandas 的Dataframe 处理
df1 = pd.DataFrame(lst1)
df1.fillna(value="null", inplace=True)
print(df1)

# 判断加标题
columns_head = []
for i in range(len(df1.columns)):
    k = "{}{}".format("最低价" if i % 2 == 0 else "最高价", i//2+1)
    columns_head.append(k)
df1.columns = columns_head
print(df1)
df1.to_csv("data_产品.csv",index=None,encoding="gbk")

img

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《python字典键值存csv_python保存字典》, 一起来围观吧 https://blog.csdn.net/weixin_39940182/article/details/110340348?utm_source=app&app_version=5.3.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

保存到一个文件还是多个?

你先获取价格最多的一行,得到列数
然后在填数据,把没有值有列的地方传NULL
楼上好几个代码都写好了