簡體   English   中英

Python 2.7解壓縮錯誤

[英]Python 2.7 unpacking error

我收到錯誤消息

badfilesdic = {k:對於k的v,在badfilelist中的v} ValueError:需要多個值才能解壓縮

我不確定如何解決!

this is the code:

def badfiles(hasheddic, filesavedin ):

    print hasheddic
    print '\n'
    print filesavedin

    badfilelist = [s.split(' : ') for s in hasheddic]
    badcontentlist = [s.split(' : ') for s in filesavedin]
    badfilesdic = {k: v for k, v in badfilelist}
    badcontentdic = {k: v for v, k in badcontentlist}

    match = ""
    for hashval, filename in badcontentdic.iteritems():
        if filename in badfilesdic:
            match += (hashval + " File Extension:  " + badfilelist[filename]) + "\n"

    return match

您需要更正您的代碼:

badfilelist = [s.split(':') for s in hasheddic]

然后

badfilesdic = dict(badfilelist) # if you want to have a unique dict

要么

badfilesdic = [{k:v} for k, v in badfilelist] # if you want to have a list of dicts

也許:

badfilesdic = tuple({k:v} for k, v in badfilelist) # if you want to have a tuple of dicts

或任何你喜歡的。 您所需要做的就是正確解壓縮變量。

您正在打開的包裝無法按預期工作。 當您說k: v for k, v in hasheddic中表示k: v for k, v in hasheddic您是k: v for k, v in hasheddic每個元素中聲明兩個元素(k,v)的元hasheddic 如果任何字符串的長度超過2,則會出現拆包錯誤。

例如:

s = "hi hi".split()
for a, b in s:
    print a
    print b

退貨

h
i
h
i

如果字符串是例如“ foo bar”,則將同時收到“ foo”和“ bar”的解包錯誤。

如果確定輸入字符串的格式正確( split始終返回2元素列表),則可以執行以下操作:

{x[0]: x[1] for x in badfilelist}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM