python - 在条件下删除python字典中的项目
问题描述
假设我有这本词典
{0: ['replaced scanner user properly working cage replaced wire damaged stored later use',
'replaced scanner'],
1: ['scanner replaced station working well'],
2: ['station scanner synced base station working'],
3: ['printer offlineswitched usb portprinter online working'],
4: ['replaced barcode label reflecting tcs ip address'],
5: ['restarted thin client using ssh run restart command'],
6: ['printer reconfigured test functioning normally', 'printer reconfigured'],
7: ['removed old printer service installed replacement tested good'],
8: ['tc required reboot rebooted tc aa signin dp functional'],
9: ['resetting printer factory settings reconfigure'],
10: ['updated windows forced update laptop operated normally'],
11: ['printer settings set correct printer working correctly'],
12: ['power printer disconnected reconnected working fine'],
13: ['power cycled equipment restocked spooler plastic bubbles'],
14: ['laptop checked ive logged paskiplacowepl without problem'],
15: ['reseated scanner cables connection usb port resolve issue'],
16: ['red scanner reconfigured base rebooted via usb joint'],
17: ['tested printer station connected working resolved'],
18: ['reconfigured printer media print properly'],
19: ['replaced defective device fresh imaged laptop'],
20: ['reconfigured scanner base tested aa fine'],
21: ['printer unplugged usb port working properly'],
22: ['reimaging laptop corrected anyconnect software issue'],
23: ['reconfigured scanner confirmed scans intended'],
24: ['reconnected usb cable reassign printer ports port'],
25: ['plugged usb cable port scanner works'],
26: ['cleared linux print queue working'],
27: ['user reset password successfully closing tt'],
28: ['reset printer get print'],
29: ['reconfigured hand scanner linked station'],
30: ['replaced scanner station functional', 'replaced scanner'],
31: ['laptops battery needed reset asset serial'],
32: ['printer reconfigured'],
33: ['upgraded rebooted station'],
34: ['deploying replacement scanner'],
35: ['replaced scanner'],
36: ['updated pc'],
37: ['tc reimage']}
你可以看到这个键0
和35
有相同的字符串。我想35
删除。我将如何以最好的 Python 方式概括这个过程?
解决方案
您可以创建所有值的列表并检查该值是否已存在于列表中。如果是,则将其从值列表中删除。用值替换原始列表。如果找到一个空列表,则存储该键,以便在完成迭代后将其从字典中弹出。
#dict_vals has the original list.
consolidated_vals = [] # to store all values from the list
popkeys = [] #to store keys that need to be deleted
#iterate thru the full dictionary
for k,vals in dict_vals.items():
#check if each value in the values list was already in the list. if found, ignore
x = [v for v in vals if v not in consolidated_vals]
#if list is empty (all values were already found in the list earler), then store key to pop
if x:
consolidated_vals += x #store new values to the consolidated values list
dict_vals[k] = x #replace old values with new values as there may have been a value removed
else:
popkeys.append(k) #store key to pop after iterating thru full list
#now pop all the keys that had 100% match for values already found
for pkeys in popkeys: dict_vals.pop(pkeys)
print (dict_vals)
其输出将是:
{0: ['replaced scanner user properly working cage replaced wire damaged stored later use', 'replaced scanner'],
1: ['scanner replaced station working well'],
2: ['station scanner synced base station working'],
3: ['printer offlineswitched usb portprinter online working'],
4: ['replaced barcode label reflecting tcs ip address'],
5: ['restarted thin client using ssh run restart command'],
6: ['printer reconfigured test functioning normally', 'printer reconfigured'],
7: ['removed old printer service installed replacement tested good'],
8: ['tc required reboot rebooted tc aa signin dp functional'],
9: ['resetting printer factory settings reconfigure'],
10: ['updated windows forced update laptop operated normally'],
11: ['printer settings set correct printer working correctly'],
12: ['power printer disconnected reconnected working fine'],
13: ['power cycled equipment restocked spooler plastic bubbles'],
14: ['laptop checked ive logged paskiplacowepl without problem'],
15: ['reseated scanner cables connection usb port resolve issue'],
16: ['red scanner reconfigured base rebooted via usb joint'],
17: ['tested printer station connected working resolved'],
18: ['reconfigured printer media print properly'],
19: ['replaced defective device fresh imaged laptop'],
20: ['reconfigured scanner base tested aa fine'],
21: ['printer unplugged usb port working properly'],
22: ['reimaging laptop corrected anyconnect software issue'],
23: ['reconfigured scanner confirmed scans intended'],
24: ['reconnected usb cable reassign printer ports port'],
25: ['plugged usb cable port scanner works'],
26: ['cleared linux print queue working'],
27: ['user reset password successfully closing tt'],
28: ['reset printer get print'],
29: ['reconfigured hand scanner linked station'],
30: ['replaced scanner station functional'],
31: ['laptops battery needed reset asset serial'],
33: ['upgraded rebooted station'],
34: ['deploying replacement scanner'],
36: ['updated pc'],
37: ['tc reimage']}
注意这里删除了键 32 和 35。
推荐阅读
- pdf - 检测文件夹中的 PDF 文件并检查它是否打开
- arduino - IP 数据包处理 - ARDUINO
- sql - 在 BigQuery 上运行过去 30 天的 Sum
- ios - 将可平移的 UIView 保持在边界内
- vbscript - QTP/UFT - 在一个数组中存储多个数组
- android - 如何在 Kotlin 中使用 gson 反序列化到 ArrayList
- python - 如何设置模板变量
in Django?</h1> <div id="body"><p>I am very new to Django, trying to setup my first personal CMS website. Please apologize if it is obvious. I am transitioning from <code>PHP</code>, so it is little confusing - ssis - SSIS中字段中的逗号和双引号
- asp.net-mvc - IIS 重写从 HTTPS 中删除 H
- javascript - Wordpress - 点击时自动关闭移动菜单