字典更新序列元素#10的长度为0;需要2

时间:2016-07-09 18:50:08

标签: python dictionary

同样的错误一直在无休止地重复:(

代码:

def query():
    query = input("Please insert your query here:\n")
    with open("TroubleShootingKey.txt") as f:
        dictq = dict(x.rstrip().split(None, 1)for x in f)
        print(dictq)
        found =False
        for k, v in dictq.items():
            if k in query:
                found = True
                print(v)

        if not found:
            print("sorry, we didn't get that")

query()

...

这是语法错误:

Traceback (most recent call last):
  File "C:/Documents and Settings/Naoman/Desktop/Naoman's Work/Computer Science/CA Final week/CA.6.py", line 42, in <module>
    query()
  File "C:/Documents and Settings/Naoman/Desktop/Naoman's Work/Computer Science/CA Final week/CA.6.py", line 31, in query
    dictq = dict(x.rstrip().split(None, 1)for x in f)
ValueError: dictionary update sequence element #10 has length 0; 2 is required

...

这是文件被打开(记事本):

转向充电

音量将其更改为声音/正常模式

相机移除阻挡镜头的材料

水让手机晾干

过热让手机在凉爽的环境中降温

互联网这是因为您不在覆盖范围内,请尝试更改您的位置以捕获信号

wifi有两种方法可以解决这个问题,首先删除我的数据

存储好,你可以在凉爽的环境中降温

冻结取出电池并将其放回以重新启动手机

软件不幸的是,解决问题的唯一方法是重置手机

2 个答案:

答案 0 :(得分:0)

这可能是因为你到达了文件的末尾。

您可以添加

try:
    ...
except ValueError:
    ...

阻止您的代码在这种情况下停止(使用break)。

答案 1 :(得分:0)

空字符串上的

split(None, 1)将返回一个空列表,这可能是此错误的原因。您可以使用以下代码段重现错误:

dict(x.split(None, 1) for x in [''])

可能的解决方法是避免在空行上调用split()

dict(x.rstrip().split(None, 1) for x in f if x)