我想在新的dict中存储JSON文件中的两个值:{[1,2,5]:[0], [1,2,4]:[2]}
我的JSON文件如下所示:
{
"index": [
{
"timestamp": "2018-04-17 17:56:25",
"src": "src",
"dst": [1,2,5],
"value": [0],
"datatype": "datatype"
},
{
"timestamp": "2018-04-17 18:00:43",
"src": "src",
"dst": [1,2,4],
"value": [2],
"datatype": "datatype"
}
]
}
我写了这个代码:
with open(filename) as feedjson:
json_data = json.load(feedjson)
feedjson.close()
list_dev = {}
for i in json_data["index"]:
key = i['value']
value = i['dst']
list_dev[key] = value
print(list_dev)
我得到这个错误:
list_dev.update({key: value})
TypeError: unhashable type: 'list'
有人能帮我解决这个问题吗?你知道吗
value
是list
->;[1]
或[2]
或其他什么,list是可变对象,所以不能对它进行散列您可以使用列表中的元素
key=i['value'][0]
或者将列表转换为元组key=tuple(i['value'])
这两个对象都是不可变的,因此可以散列并用作键顺便说一句,
with
提供上下文管理器,这样您就不需要使用feedjson.close()
关闭文件,with
会帮您完成这只是为了理解:
字典键应该是不可变的。在这个问题中,
[1,2,5]
是一个列表,它是可变的(可以使用append、pop、push等方法修改内容)数据类型。因此,将列表的全部内容用作字典键(非常罕见)的唯一方法是将其转换为不可变的数据类型,如tuple
或string
:相关问题 更多 >
编程相关推荐