Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将3个python字典写入csv_Python_Python 3.x_Csv - Fatal编程技术网

将3个python字典写入csv

将3个python字典写入csv,python,python-3.x,csv,Python,Python 3.x,Csv,我有3本字典(其中2本是带有多个值的setdefault DICT)- 记分- {'Id_1': [('100001124156327', 0.0),

我有3本字典(其中2本是带有多个值的setdefault DICT)-
记分-

{'Id_1': [('100001124156327', 0.0),                                                                                                                                                                                                                                                                                
          ('100003643614411',0.0)],
 'Id_2': [('100000435456546',5.7),
          ('100000234354556',3.5)]}
后记-

{'Id_1':[(+,100004536)],
 'Id_2' :[(-,100035430)]}
评论-

{'Id_1':[(+,1023434234)],
 'Id_2':[(-,10343534534)
          (*,1097963644)]}
我目前的方法是将它们写入3个不同的csv文件,然后合并它们,我想根据公共第一行(ID_行)合并它们。 但是我不知道如何将3个csv文件合并成一个csv文件。还有,有没有什么方法可以让我把所有3本字典都写进一个csv,而不用单独写

所需输出-

Ids   Score_Ids                Post_Ids      Comment_Ids
Id_1  100001124156327',0.0     +,100004536   +,1023434234
      100003643614411',0.0
Id_2  100000435456546',5.7     -,100035430   -,10343534534
      100000234354556',3.5                   *,1097963644                                                                                                               

如何使用最佳方法以正确的方式执行此操作?

您可以先将它们全部合并,然后将它们写入csv文件:

import pprint

scores = {
  'Id_1': [
    ('100001124156327', 0.0),                                            
    ('100003643614411',0.0)],
 'Id_2': [
   ('100000435456546',5.7),
  ('100000234354556',3.5)
  ]
}

post_dict = {
  'Id_1':[
    ('+',100004536)
  ],
 'Id_2' :[
    ('-',100035430)
  ]
}
comment_dict = {
  'Id_1':[
    ('+',1023434234)
  ],
  'Id_2':[
    ('-',10343534534),
    ('*',1097963644)
  ]
}

merged = {
  key: {
      "Score_Ids": value,
      "Post_Ids": post_dict[key],
      "Comment_Ids": comment_dict[key]
    }
  for key, value
  in scores.iteritems()
}

pp = pprint.PrettyPrinter(depth=6)

pp.pprint(merged)

参考:

您可以先将它们全部合并,然后将它们写入csv文件:

import pprint

scores = {
  'Id_1': [
    ('100001124156327', 0.0),                                            
    ('100003643614411',0.0)],
 'Id_2': [
   ('100000435456546',5.7),
  ('100000234354556',3.5)
  ]
}

post_dict = {
  'Id_1':[
    ('+',100004536)
  ],
 'Id_2' :[
    ('-',100035430)
  ]
}
comment_dict = {
  'Id_1':[
    ('+',1023434234)
  ],
  'Id_2':[
    ('-',10343534534),
    ('*',1097963644)
  ]
}

merged = {
  key: {
      "Score_Ids": value,
      "Post_Ids": post_dict[key],
      "Comment_Ids": comment_dict[key]
    }
  for key, value
  in scores.iteritems()
}

pp = pprint.PrettyPrinter(depth=6)

pp.pprint(merged)

作为参考:

我建议您在将三个DICT写入csv文件之前,将其转换为一个DICT列表

范例

rows = [
    {"Score_Id": "...", "Post_Id": "...", "Comment_Id": "..."},
    {"Score_Id": "...", "Post_Id": "...", "Comment_Id": "..."},
    {"Score_Id": "...", "Post_Id": "...", "Comment_Id": "..."},
    ...
]
然后使用该类写入所有行


由于您的值中有逗号(您确定这是一种良好的行为吗?也许将它们拆分为两个不同的列可能是更好的方法),请小心使用制表符或其他东西作为分隔符

我建议您在将三个dict写入csv文件之前,将其转换为一个dict列表

范例

rows = [
    {"Score_Id": "...", "Post_Id": "...", "Comment_Id": "..."},
    {"Score_Id": "...", "Post_Id": "...", "Comment_Id": "..."},
    {"Score_Id": "...", "Post_Id": "...", "Comment_Id": "..."},
    ...
]
然后使用该类写入所有行


由于您的值中有逗号(您确定这是一种良好的行为吗?也许将它们拆分为两个不同的列可能是一种更好的方法),因此请小心使用制表符或其他东西作为分隔符

我建议将这三个都写入同一个文件

您可以通过执行以下操作获得常用键:

common_keys = set(score_dict.keys()+post_dict.keys()+comment_dict.keys())
for key_ in common_keys:
    val_score = score_dict.get(key_, some_default_value)
    post_score = post_dict.get(key_, some_default_value)
    comment_score = comment_dict.get(key_, some_default_value)
    # print key and vals to csv as before

我建议将这三个文件都写入同一个文件

您可以通过执行以下操作获得常用键:

common_keys = set(score_dict.keys()+post_dict.keys()+comment_dict.keys())
for key_ in common_keys:
    val_score = score_dict.get(key_, some_default_value)
    post_score = post_dict.get(key_, some_default_value)
    comment_score = comment_dict.get(key_, some_default_value)
    # print key and vals to csv as before

好的,我可以从它形成一个单独的字典,现在将写入csv将与写入任何其他字典一样,这也是最好的方法,因为我是新来的,我以前没有任何使用itI的经验。我建议首先在python中获得正确的数据,例如通过合并,是一种比在csv文件中进行调整更好的方法。YMMV。你能告诉我怎么把它写进csv吗?我用了这个后就得到了一本字典。我需要csv。也许我会稍微切入重点;我不会为你写所有的代码。你可能已经有了一种编写csv文件的方法,所以你所需要做的就是以这里的格式获取数据,并将其转换为你需要的格式好的,我可以用它形成一个单独的字典,现在,向csv文件的编写将与编写任何其他字典一样,另外,这是最好的方法吗?因为我对这一点还不熟悉,而且我以前没有任何itI经验。我建议先在python中获得正确的数据,例如通过合并,这是比在csv文件中调整数据更好的方法。YMMV。你能告诉我怎么把它写进csv吗?我用了这个后就得到了一本字典。我需要csv。也许我会稍微切入重点;我不会为你写所有的代码。你可能已经有了一种编写csv文件的方法,所以你所需要做的就是以这里的格式获取数据,并将其转换为你需要的格式。是的,我不确定正确的方法是什么,因为我对这一点还不熟悉,并且仍在发展我对它的思考,任何关于如何解决此类问题的线索都将受到赞赏。是的,我不确定什么是正确的方法,因为我对这一点还不熟悉,并且还在发展我的思维,任何关于如何解决这类问题的线索都会被欣赏好的,我得到了关键,现在如何进一步,比如如何在其中写入更多的值,然后到csvOkay,我得到了关键,现在,如何进一步处理,比如如何在其中写入更多值,然后写入csv