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