python - 如果在 CSV 列表中找到值,则打印字典键
问题描述
我对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 建议的列表理解所有它需要的是:
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
会很好。
这里我只是给出一些猜测的答案。在你判断之后if hashes in hashes_ssnxxxx.values():
,你想打印一些相对键hashes_ssnxxxx.keys()
而不是所有键。
也许你可以使用一些列表理解来简单地做到这一点。就像
[keys for key,vals in hashes_ssnxxxx.items() if hashes == vals]
该代码的输出是一个列表。如果你想让它更具可读性,也许你需要使用一些索引[0]
或','.join()
打印它。
推荐阅读
- java - Need to serialize as JSON string using multiple separate keys in POJO using jackson?
- node.js - 我可以在不删除 package-lock.json 文件的情况下解决 npm 安装错误吗?
- java - JavaFX ComboBox 不呈现调整大小的单元格
- powerbi - 计算先前日期的 Powerbi DAX 公式
- python - 在django中查询多对多对象的属性
- postgresql - Google Cloud Function 访问 Cloud SQL PostgreSQL 数据库超时
- java - Sonarqube 错误地显示“可能的空指针取消引用”错误
- flutter - Flutter:setState() 不会触发构建
- angular - 角度 2 中的常量对象列表
- linux - 内核代码如何在汇编级别访问内存