[英]Looping a list through dictionary values python
我想知道是否可以循环一个值列表
例:
lst = ['RH', 'CD241', 'C2', 'SCZD9', 'RG59L', 'WNT3A']
通过字典的值
例:
ref_dict = {
'': [''], '6005': ['RH50A', 'CD241', 'SLC42A1'], '603': [''],
'6000': [''], '8787': ['PERRS', 'RGS9L', 'MGC26458'],
'41': ['ACCN2', 'BNaC2', 'hBNaC2'], '8490': [''],
'9628': [''], '5999': ['SCZD9']
}
要检查列表中的单个值是否在字典中具有该值,如果它确实具有该值,那么它将向我返回该值所在的键。
示例:第一个值CD241在字典'6005': ['RH50A, CD241, SLC42A1']
,它将为我返回键"6005"
。
就像是,
for key in ref_dict.keys():
if set(lst) & set(ref_dict[key]):
#do something with your key
#key is the key you want
如果有多个键,其中lst
中的元素之一将存在,那么您可以通过列表理解获得这些键的列表,
[key for key in ref_dict.keys() if set(lst) & set(ref_dict[key])]
根据您的情况输出['6005', '5999']
。
魔术发生在设定的相交部分,
(set(['RH', 'CD241', 'C2', 'SCZD9', 'RG59L', 'WNT3A']) &
set(['RH50A', 'CD241', 'SLC42A1']))
会给你- ['CD241']
不如检查,如果东西lst
值列表或不存在。
from collections import defaultdict
lst = ['RH', 'CD241', 'C2', 'SCZD9', 'RG59L', 'WNT3A']
ref_dict = {
'': [''], '6005': ['RH50A, CD241, SLC42A1'], '603': [''],
'6000': [''], '8787': ['PERRS, RGS9L, MGC26458'],
'41': ['ACCN2, BNaC2, hBNaC2'], '8490': [''],
'9628': [''], '5999': ['SCZD9']
}
all_values = defaultdict(list)
for key in ref_dict:
for value in (map(lambda x: x.strip(), ref_dict[key][0].split(","))):
all_values[value].append(key)
print all_values['CD241'] # ['6005']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.