簡體   English   中英

如果在CSV列表中找到值,則打印字典鍵

[英]Printing Dictionary Key if Values were found in CSV List

我是python的新手,所以如果這是對一個簡單問題的詳盡解釋,請原諒我。 我需要一些幫助,以了解如何使用字典從csv列表中查找匹配項,然后在報告類型輸出中打印密鑰。

目標:我有一個明文隱私數據列表,例如社會安全號碼。 我需要比較該明文的哈希值,同時將明文混淆到最后4位數字(XXX-XX-1245)。 如果從明文哈希到CSV查找中已經存在的哈希匹配,我將執行一個微型報告,將找到的哈希可能屬於的人口統計信息鏈接起來。 另外,由於不容易,因此迷你報告中需要打印模糊的SPI值。

如果我剛剛生成的哈希值與電子表格中第2列的哈希值匹配,則輸出應如下所示:

user@gmail.com Full Name Another Full Name xxx-xx-1234  location1 location2

問題 :所有的哈希,混淆和匹配均已完成並存儲在列表中,並且可以正常工作。 我需要幫助,弄清楚如何從字典以及下面的其他列中打印鍵,而不必每次在for循環中都打印整個集合。

這在我的讀者之外起作用:

 for i in hashes_ssnxxxx:
        print(i)

但我不知道如何利用該價值並將其放在閱讀器內部的打印聲明中。

clear_text_hash = [] #Where Hash of clear text value found is stored
obfuscate_xxxxssn = [] #Where obfuscated SPI found by using re.sub is stored

#Zip them in a dictonary to keep the two related
hashes_and_ssnxxxx = dict(zip(obfuscate_xxxxssn,clear_text_hash))

book_of_record = open('path\to\bookofrecord.csv', 'rt',  encoding='UTF-8')
a1 = csv.reader(book_of_record, delimiter=',')

for row in a1:
    hashes = row[2] 
    if hashes in hashes_ssnxxxx.values():
        print(row[16], row[6], hashes_ssnxxxx.keys(), row[13], row[35], row[18], row[43])

使用@tianhua liao建議的列表理解進行UPDATE [已解決] ,它所需要的只是:

if hashes in hashes_ssnxxxx.values():
     obfuscate = [k for k,v in hashes_ssnxxxx.items() if hashes == v]
     print(row[16], obfuscate, row[6], row[13], row[35], row[18], row[43])

實際上,我不確定您的問題到底是什么。 如果可以給我們一些簡單的hashes_ssnxxxx示例, hashes_ssnxxxx hashes會很好。

在這里,我只給出一些猜測的答案。 在判斷if hashes in hashes_ssnxxxx.values():if hashes in hashes_ssnxxxx.values(): ,您要從hashes_ssnxxxx.keys()打印一些相對鍵,而不是所有鍵。

也許您可以使用一些列表理解來簡單地做到這一點。 就像

[keys for key,vals in hashes_ssnxxxx.items() if hashes == vals]

該代碼的輸出是一個列表。 如果要使其更具可讀性,則可能需要使用一些索引[0]','.join()進行打印。

暫無
暫無

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

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