从python字典如何将键和值保存到* .txt文件[关闭]

Posted

技术标签:

【中文标题】从python字典如何将键和值保存到* .txt文件[关闭]【英文标题】:From a python dictionary how do I save the key and value to a *.txt file [closed] 【发布时间】:2019-11-18 07:09:08 【问题描述】:

如何从字典中将键和值打印到 *.txt 文件中?

我已尝试读取数据并将其打印到 *.txt 文件,但 name.txt 文件为空。

#The code that I have tried
#my_dict is given above
def create_dict():

    with open("name.txt", "w+") as f:
    for key, value in my_dict:
            print(key, value)
            f.write(' '.format(key, value))

【问题讨论】:

这有点误导函数名。另外,尽量不要用你自己的变量来隐藏像dict 这样的内置名称。改为my_dict。无论如何,你的dict 是在哪里定义的? 我认为您需要在with 语句之后缩进代码。 for key, value in dict.items() 也不要使用 dict,因为它是 python 内置名称 另外,不要在循环的每次迭代中close()您的文件;那没有意义。您已经在 with 块中拥有它,因此将为您处理关闭 缩进是不可能的。你不能 closewith 上下文处理程序中打开的文件,尤其是在第一次迭代之后(但它会在关闭之前写入 one 条目......虽然没有尾随换行符,所以该文件不是有效的文本文件)。 【参考方案1】:
def create_dict():

  with open("name.txt", "w") as f:
    for key, value in thisdict.items():
      print(key, value)
      f.write(' '.format(key, value)+"\n")

您应该将您的字典从“dict”重命名为其他名称(以上为 thisdict),因为 dict 是 Python 中的一个特殊内置名称。

【讨论】:

【参考方案2】:

正如其他答案所指出的,您的 with 语句中的缩进完全错误。

泡菜

虽然,如果您的目标是保存字典以供以后使用,那么您最好的选择可能是使用pickle。如果您的意图是以人类可读的格式保存字典,这将无法解决问题,但作为数据存储方法会更有效。

import pickle

my_dict = 
    'foo': 'bar',
    'baz': 'spam'


# This saves your dict
with open('my_dict.p', 'bw') as f:
    pickle.dump(my_dict, f)

# This loads your dict
with open('my_dict.p', 'br') as f:
    my_loaded_dict = pickle.load(f)

print(my_loaded_dict)  # 'foo': 'bar', 'baz': 'spam'

Json

存储效率和可读性之间的折衷可能是改用json。对于不可序列化 JSON 的复杂 Python 对象,它将失败,但它仍然是一种完全有效的存储方法。

import json

my_dict = 
    'foo': 'bar',
    'baz': 'spam'


# This saves your dict
with open('my_dict.json', 'w') as f:
    # passing an indent parameter makes the json pretty-printed
    json.dump(my_dict, f, indent=2) 

# This loads your dict
with open('my_dict.json', 'r') as f:
    my_loaded_dict = json.load(f)

print(my_loaded_dict)  # 'foo': 'bar', 'baz': 'spam'

【讨论】:

以上是关于从python字典如何将键和值保存到* .txt文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将键和值添加到优先级队列中并在 Java 中按键排序

高效的方法将键和值添加到scala中的Set Map

未能将键和值添加到javascript对象

在python中的字典上使用join()将键值对作为一个长字符串返回

GoLang基础数据类型---字典

如何从一系列字典中创建键和值的数据框[重复]