使用字典进行键比较

0 投票
2 回答
978 浏览
提问于 2025-04-15 15:08

我有一个文件,里面的内容结构是这样的:

system.action.webMessage=发生了一个错误,无法访问网页。
system.action.okMessage=一切正常。
core.alert.inform=错误编号 5512。

我需要一个脚本来比较两个文件中的键,这两个文件的结构都是这样的。我正在写一个脚本,把文件转换成字典,然后用字典的结构来比较两个文件中键(就是'='前面的字符串),并告诉我哪个键的值是相等的。

file = open('system.keys','r')
lines = []
for i in file:
    lines.append(i.split('='))

dic = {}
for k, v in lines:
    dic[k] = v

但是我遇到了以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

有没有人能给点提示或者帮助? :( 我在谷歌上找了很多方法,但都没有解决。

2 个回答

0

如果一行里面有多个'=',那么你得到的列表就会有超过两个的项目,而你的循环(for k, v in items)是期望每个列表只有两个项目。

你可以试试用 i.split('=', 1)

举个例子:

>>> "a=b=c".split('=')
['a', 'b', 'c']
>>> "a=b=c".split('=', 1)
['a', 'b=c']
2
file = open('system.keys','r')
lines = []
for i in file:
    lines.append(i.partition('='))

dic = {}
for k,_,v in lines:
    dic[k] = v
myfile = open('system.keys','r')
dic = dict(i.split("=",1) for i in myfile)

或者使用分割

因为 dict() 知道如何从一系列的 (键, 值) 对中创建一个字典

撰写回答