【问题标题】:too many values to unpack (expected 2)太多值无法解包(预期 2)
【发布时间】:2015-11-22 04:59:07
【问题描述】:
def read_dict(文件名): f=open(file_name,'r') dict_rap={} 对于 csv.reader(f) 中的键、值: dict_rap[key]=str(val) f.close() 返回(dict_rap) test_dict = {'wassup':['Hi','Hello'],'起床':['离开','退出'], 'it on you':['good bye','have a nice day'],'bet':['ok','alright'],'ight':['ok','yes'], 'whip':['car','vechile'],'lit':['fun','festive'],'guap':['money','currency'],'finesse':['to get无论如何想要的结果','欺骗某人'], 'jugg':['你如何赚钱','现代术语'],'1111':['www'] } 回溯(最近一次通话最后): 文件“C:\Users\C2C\Desktop\rosetta_stone.py”,第 97 行,在 改革的_dict = read_dict(file_name)#,test_dict) 文件“C:\Users\C2C\Desktop\rosetta_stone.py”,第 63 行,在 read_dict 中 对于 csv.reader(f) 中的键、值: ValueError:要解包的值太多(预期为 2)

【问题讨论】:

  • 请发布完整的回溯。
  • 请正确格式化您的代码并发布完整的回溯。截至目前,您的帖子既不可读,也不包含足够的信息。
  • 你会 not 得到像 {'wassup':'Hello','wassup': 'Hi'} 这样允许重复键的字典

标签: python csv dictionary


【解决方案1】:

来自csv 文档...

In [2]: csv.reader??
Docstring:
csv_reader = reader(iterable [, dialect='excel']
                        [optional keyword args])
    for row in csv_reader:
        process(row)
......
......
The returned object is an iterator.  Each iteration returns a row

我想这很不言自明......

我认为该列表的每一行都是您所期望的字典。因此,您的dict 处理代码应该进入一个迭代,该迭代将遍历csv.reader 返回的胖列表

【讨论】:

    【解决方案2】:

    恐怕csv.reader(f) 不会返回您期望它返回的内容。我不知道您的 .csv 文件到底长什么样,但我怀疑它是否会直接返回您尝试放入字典中的两个值。

    假设 .csv 的前 3 行如下所示:

    wassup,hi,hello
    get up through,to leave,to exit
    its on you,good bye,have a nice day
    

    获取 .cvs 并遍历每一行的更好方法可能是:

    ...
    my_csv = csv.reader(f)
    for row in my_csv:
        # row is a list with all the values you have in one line in the .csv
        if len(row) > 1:
            key = row[0] # for the 1st line the value is the string: 'wassup'
            values = row[1:] # here for the first line you get the list: ['hi', 'hello']
            # ... and so on
    

    【讨论】:

      【解决方案3】:

      这是说 csv.reader(f) 只产生一件事,您试图将其视为两件事(key 和 val)。

      假设您使用的是标准 csv 模块,那么您将得到一个仅包含一项的列表。如果您希望输入有两个项目,那么您可能需要指定一个不同的分隔符。例如,如果您的输入有分号而不是逗号:

      csv.reader(f, delimiter=";")
      

      【讨论】:

        猜你喜欢
        • 2018-09-17
        • 1970-01-01
        • 2019-05-08
        • 2019-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 2021-07-05
        相关资源
        最近更新 更多