[英]Check if a dictionary value contains a list item
我有一个字典,它有一个键(一个两位数的前缀)和一个值(一个字符串列表)。 它看起来像这样:
prefixes = {
"AC" : ["england-wales"],
"OC" : ["england-wales", "wales"],
"SC" : ["scotland"],
"NC" : ["northern-ireland"]
}
我正在尝试创建一个前缀列表,其中值包含列表中提供的区域。
所经过的区域可以是一个或多个区域,例如:
regions = ['england-wales', 'wales']
因此,根据上述数据,我想创建一个名为 prefixes 的新列表,它将包含值中包含“wales”或“england-wales”的所有前缀:
prefix_list = ['AC', 'OC']
而如果 regions 正好等于 'wales' 那么:
prefix_list = ['OC']
我尝试了一些东西并使这个混乱的解决方案起作用:
combo_list = []
prefix_list = []
for r in regions:
combo_list.append([k for k, v in prefixes.items() if r in v])
for sublist in combo_list:
for i in sublist:
prefix_list.append(i)
prefix_list = sorted(set(prefix_list)) #This will remove duplicates for me
我认为必须有更好、更“清洁”的方法来执行此操作,但无法完全弄清楚。 任何帮助表示赞赏。
您可以为此使用any()
- 作为列表理解:
prefix_list = [k for k, v in prefixes.items() if any(x in v for x in regions)]
给我们
>>> prefix_list
['AC', 'OC']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.