使用字典进行密钥比较

时间:2009-10-16 21:36:09

标签: python file list dictionary compare

我有一个具有以下结构的文件:

system.action.webMessage =网络访问期间发生了错误。 system.action.okMes​​sage =一切都好。 core.alert.inform =错误号5512。

我需要一个脚本来比较2个文件中的键与此结构。我正在使用脚本将文件转换为字典并使用字典结构来比较两个文件中的de键('='之前的字符串),并告诉我哪个键的值相等。

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

任何人都有一些线索或帮助吗? :( 我尝试了很多我在google中找到但没有解决方案的东西。

2 个答案:

答案 0 :(得分: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()知道如何从(key,value)

序列中创建字典

答案 1 :(得分:0)

如果一行中有多个'=',您将获得一个包含两个以上项目的列表,而您的for循环(for k, v in items)期望每个列表只有两个项目。

尝试使用i.split('=', 1)

例如:

>>> "a=b=c".split('=')
['a', 'b', 'c']
>>> "a=b=c".split('=', 1)
['a', 'b=c']