微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据Python中的字典值隔离输入数据

如何解决根据Python中的字典值隔离输入数据

如果dict中存在/不存在输入数据,则需要对其进行隔离:

输入文件

1,aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba
2,aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba
3,aaaaaaaangdg77mg3cxnialazk7whbtdidftz3rv2bhqrxcvymaecagxdq
4,aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba
5,aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba
6,aaaaaatbmbxncexycbtsyrnhexniqr7g4vypfuksh5ezmzymuw7k2bw4sa
7,aaaaaatbmbxncexycbtsyrnhexniqr7g4vypfuksh5ezmzymuw7k2bw4sa 

基于mapping_hash将脚本与上述文件分离的脚本

# Check if the col[2] in the file is part of this dictionary
mapping_hash = {"ad1": "aaaaaaaangdg77mg3cxnialazk7whbtdidftz3rv2bhqrxcvymaecagxdq","ad2":"aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba"}

absnt_dict= {}
Present_dict = {}

# Read the file
with open('so_input') as f:
    for row in f:
        row=row.strip().split(',')
        row_number = row[0]
        hash =row[1]
        print("--------------")
        
        for key,value in mapping_hash.items():
            #check if file value is part of mapping_hash dictionary
            if hash == value:
                print "Yes"
                Present_dict[row_number] = mapping_hash.keys()
            else:
                print "Na"
                absnt_dict[row_number] = hash

print Present_dict
print absnt_dict

输出

--------------
Yes
Na
--------------
Yes
Na
--------------
Na
Yes
--------------
Yes
Na
--------------
Yes
Na
--------------
Na
Na
--------------
Na
Na

Row part of Hash:
    {'1': ['ad2','ad1'],'3': ['ad2','2': ['ad2','5': ['ad2','4': ['ad2','ad1']}
Row not part of Hash:    
{'1': 'aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba','3': 'aaaaaaaangdg77mg3cxnialazk7whbtdidftz3rv2bhqrxcvymaecagxdq','2': 'aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba','5': 'aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba','4': 'aaaaaaaa3nawwqfzplgms3u4n7kobqq344sqkn3e75zpsek7kxgaskwsba','7': 'aaaaaatbmbxncexycbtsyrnhexniqr7g4vypfuksh5ezmzymuw7k2bw4sa','6': 'aaaaaatbmbxncexycbtsyrnhexniqr7g4vypfuksh5ezmzymuw7k2bw4sa'}

这里,根据字典中元素的数量,循环将迭代并创建重复的条目!

  1. 我希望6和7应该是 absnt_dict 的一部分,其余部分应该是 Present_dict
  2. 输出1应该是ad2,而不像列出两个值'1': ['ad2','ad1']

解决方法

这是因为即使遇到“当前”也要继续检查

Present_dict[row_number] = "Present"

因此,所有哈希都插入了absnt_dict中。

您应该改用会员资格检查

# Read the file
with open('so_input') as f:
    for row in f:
        row=row.strip().split(',')
        row_number = row[0]
        hash =row[1]
        print("--------------")

        if hash in mapping_hash.values():
                print "Yes"
                Present_dict[row_number] = "Present"
        else:
                print "Na"
                absnt_dict[row_number] = hash

结果:

{'1': 'Present','3': 'Present','2': 'Present','5': 'Present','4': 'Present'}
{'7': 'aaaaaatbmbxncexycbtsyrnhexniqr7g4vypfuksh5ezmzymuw7k2bw4sa','6': 'aaaaaatbmbxncexycbtsyrnhexniqr7g4vypfuksh5ezmzymuw7k2bw4sa'}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。