【发布时间】:2016-08-24 05:13:58
【问题描述】:
我正在使用 pickle 将字典对象转储到 txt 文件中。我需要从文件中获取字典并仅提取某些值并将它们作为字符串放入对象中。
我的字典看起来像这样:
obj_dict = { 'name': 'MYID', 'value': 'usdf23444',
'name': 'MYID2', 'value' : 'asdfh3479' }
我遇到的部分难题是字典中有两个'name' 和两个'value',我需要分别抓取。
这是我正在使用的代码:
import pickle
filepath = file.txt
output = open(filepath, 'rb')
obj_dict = pickle.load(output)
for i in obj_dict:
NewString = "VALUE1=" + i['value1'] + "VALUE2=" + i['value2']
print(NewString)
我知道这段代码不起作用,我更多地展示了我需要最终结果的样子,但基本上我需要将每个值放入一个我以后可以使用的字符串中。如何正确引用'value1' 和'value2'?当我试图获得一个“价值”时,我也遇到了这个错误:
TypeError: list indices must be integers or slices, not str
编辑评论 2
我不确定这是不是真的,我可以运行这段代码:
output = open(filepath, 'rb')
obj_dict = pickle.load(output)
for i in obj_dict:
print(i['value'])
我的输出是:
usdf23444
asdfh3479
【问题讨论】:
-
字典中不能有多个同名键。当您创建 dict(预酸洗)时,将其打印到屏幕上并查看您实际上没有两个值,第二个将覆盖第一个。
-
@bananafish 见上面的编辑^问题是我没有创建字典:/就是这样。
-
不可能,
dict不能有两个不同的对象有同一个key -
二进制有关系吗?这是来自 html 请求的响应。应该是这样的:
'MYID' : 'usdf23444' ; 'asdfh3479'但在dict中,它显示为具有相同键的两个值 -
@SenorPenguin 好吧,我可以向您保证,该字典没有多个同名键。从您的消息来看,它看起来更像是一个列表列表?如果您打印原始数据结构(目前称为“obj_dict”),您会得到什么?什么是类型(obj_dict)?
标签: python dictionary pickle