[英]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
filehashes
和inphashes
都是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]:
如果你所做的只是同時增加a
和b
並且它們保持相等,你也可以在這里使用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.