[英]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.