簡體   English   中英

Python:比較列表中列表的元素似乎錯誤地返回

[英]Python: Comparing elements of a list within a list appears to be returning wrongly

只是編寫文件比較程序,並遇到了這個問題。 我甚至無法理解為什么會這樣。 我盡力去谷歌搜索問題,但這有點困難。 此代碼運行時:

while a < len(filehashes) and b < len(inphashes):
    if filehashes[a][1] == filehashes[b][1]:
        print(filehashes[a][1] + ' == ' + inphashes[b][1])
        a += 1
        b += 1
    else:
        print('Inconsistency error')

我得到這個輸出:

ee53f15519619c51f205553c828e7546 == ef53f15519619c51f205553c828e7546

filehashesinphashes都是str列表的列表 (即[['honk','donk'],['bonk','ponk']] )。

雖然這是filehashes[a][1]inphashes[b][1]的預期內容。 他們顯然實際上並不相等( 'ee...' != 'ef...' )。 究竟是什么造成了這種情況,我該如何解決?

if條件是filehashes[a][1] == filehashes [b][1]而打印行是print(filehashes[a][1] + ' == ' + inphashes [b][1] )。 注意區別。 我不清楚你在問什么。 我認為這回答了它。 如果沒有,請對此進行評論,然后我將刪除此答案。

你不是在比較filehashes[a][1] == inphashes[b][1] 你在比較:

if filehashes[a][1] == filehashes[b][1]:

注意名稱,您在這里索引到相同的結構。 如果a == b保證甚至比較同一個對象,但對於任何重復的哈希值它都是真的。

也許你的意思是:

if filehashes[a][1] == inphashes[b][1]:

如果你所做的只是同時增加ab並且它們保持相等,你也可以在這里使用zip

for fhash, inphash in zip(filehashes, inpuhashes):
    if fhash[1] == inphash[1]:
        print('{} == {}'.format(fhash[1], inphash[1]))
    else:
        print('Inconsistency error')

暫無
暫無

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

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