繁体   English   中英

如何将两个具有公钥的python字典写入CSV文件?

[英]How to write two python dictionaries with common key to CSV file?

我有以下两个词典:dict1 = {'a':100,'b':200,'c':300} dict2 = {'a':0.20,'b':0.25,'c':0.30}

我想将其写入CSV:

关键值1值2
一个100 0.20
b 200 0.25
约300 0.30

具有相同键集的字典

dict1 = {'a':100,'b':200,'c':300} 
dict2 = {'a':0.20,'b':0.25,'c':0.30}

with open('some_file','w') as f:
    f.write('Key\tValue1\tValue2\n')
    for k in sorted(dict1.keys()):
        f.write("{0}\t{1}\t{2}\n".format(k,dict1[k],dict2[k]))

这将遍历一个键集,并从两个字典中打印出值。 (奖金:适用于Python 2和Python3。)

键集不相交的字典

对于希望在以下问题中找到答案的人:可能存在多个词典,并且可能存在不相交的键集,这是一个(有点怪异)的答案:

dict1 = {'a':100,'b':200,'c':300} 
dict2 = {'a':0.20,'b':0.25,'c':0.30,'d':0.40}
dict3 = {'a':2000,'b':2500,'d':9000,'e':9500}

with open('some_file','w') as f:
    f.write('Key\tValue1\tValue2\tValue3\n')
    keys_union = set(dict1.keys()).union(set(dict2.keys())).union(set(dict3.keys()))
    for k in sorted(keys_union):
        f.write("{0}\t{1}\t{2}\t{3}\n".format( k,
                        [dict1[k] if k in dict1.keys() else "-"][0],
                        [dict2[k] if k in dict2.keys() else "-"][0],
                        [dict3[k] if k in dict3.keys() else "-"][0]))

这将为其中一个词典中缺少的值打印一个“-”。

您可以将字典写入pandas数据框 ,即```

from tabulate import tabulate
import pandas as pd

dict1 = {'a':100,'b':200,'c':300} 
dict2 = {'a':0.20,'b':0.25,'c':0.30}

df = pd.Series(dict1,name='Value 1').to_frame()
df['Value 2'] = dict2.values()
print(tabulate(df, headers= 'keys', tablefmt= 'grid'))

打印df生成

+----+-----------+-----------+
|    |   Value 1 |   Value 2 |
+====+===========+===========+
| a  |       100 |      0.2  |
+----+-----------+-----------+
| b  |       200 |      0.25 |
+----+-----------+-----------+
| c  |       300 |      0.3  |
+----+-----------+-----------+

熊猫系列是一维数据结构,它将字典dict1转换为一个序列,其中字典键作为索引,字典值作为序列值。 to_frame将系列转换为具有一列的数据to_frame (2D数据结构或表),行df['Value 2'] = dict2.values()dict2添加为数据dict2 df的第二列。
您可以使用以下方式将结果数据帧写入csv文件

df.to_csv('filename here')

这是使用cat转储文件内容的结果
将文件内容转储到屏幕的结果图像

PS。 列表只需将数据框转换为修饰的文本以进行打印

编辑:这是矫kill过正,但是; 为了获得准确的输出,可以将索引重设/重命名,然后将to_csv参数index设置为False 表示不存储索引 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM