【问题标题】:How to convert multiple lists to dictionaries in python?如何在python中将多个列表转换为字典?
【发布时间】:2013-07-16 04:29:03
【问题描述】:
['*a*', '*b*', '*c*', '*d*', '*f*','*g*']
['11', '22', '33', '44', '', '55']
['66', '77', '88', '', '99', '10']
['23', '24', 'sac', 'cfg', 'dfg', '']

需要输入字典为:

{a : ('11','66','23'),b : ('22','77','24'),c : ('33','88','sac'),d :('44','','cfg')}

从 CSV 文件中读取行:

import csv
csvFile = csv.reader(open("sach.csv", "rb"))
for row in csvFile:
    print row

上面显示的代码, 行的输出如上所示,其中有许多列表。 请帮我把它放在字典格式,如上所示。

【问题讨论】:

  • 在您的字典中,您是否需要像a'a''*a*' 这样的键?

标签: python parsing csv dictionary


【解决方案1】:

压缩行:

with open("sach.csv", "rb") as csv_infile:
    reader = csv.reader(csv_infile)
    yourdict = {r[0].replace('*', ''): r[1:] for r in zip(*reader)}

zip() function 为您配对,通过传入带有 * 参数的 reader 对象,Python 将遍历 CSV 行并将每一行作为单独的参数传递给 zip()

【讨论】:

  • @martineau:因为在那一点上的 OP 帖子不是有效的 Python,除非 ab 等是局部变量,所以我不想触及那部分。只是不清楚星号是否是标记。但是感谢您修复丢失的:
  • @Martijn:没错,结果字典的键是什么有点模棱两可,因为它们没有在 OP 问题中显示的所需结果中被引用 - 但在显示的列表中从 csv 文件中读取,它们肯定是带有星号的字符串。不管怎样,你的回答很聪明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 2020-11-02
  • 2015-05-17
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 2017-12-26
相关资源
最近更新 更多