代码之家  ›  专栏  ›  技术社区  ›  Max J.

用整数作为键将dict写入csv

  •  1
  • Max J.  · 技术社区  · 2 年前

    我有一个以大纪元为键的dict。看起来是这样的:

    my_dict = {199934234: "val1", 1999234234: "val2"}
    

    当试图将其写入csv时,我得到错误“iterable expected,not int”。但是,使用常规键时没有问题。

    import csv
    
    with open('my_file.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(my_dict)
    

    我想将其写入csv,以便稍后可以将其再次加载为字典,以便更新它。。。然后再次将其写入csv。稍后我的网站将访问csv。

    这样做的最佳解决方案是什么?在任何其他情况下,我会使用rrd,但在这种情况下,我没有不规则的更新时间。

    2 回复  |  直到 2 年前
        1
  •  2
  •   user2246849    2 年前

    该函数将字典视为一个iterable,希望从中获取其他iterable(即行)。

    如果迭代字典,则只会得到关键字:

    for item in my_dict:
        print(item)
    
    199934234
    1999234234
    

    相反,您需要一个包含行的iterable。您可以使用 my_dict.items() 为此:

    print(my_dict.items())
    
    dict_items([(199934234, 'val1'), (1999234234, 'val2')])
    

    因此:

    import csv
    
    with open('my_file.csv', 'w', newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerows(my_dict.items())
    
    # File content.
    199934234,val1
    1999234234,val2
    
        2
  •  0
  •   not_speshal    2 年前

    尝试:

    with open("output.csv", "w", newline="") as csvfile:
        writer = csv.writer(csvfile)
        for k, v in my_dict.items():
            writer.writerow([k, v])