输入
我有两张名单
rule_seq =
[['#1', '#2', '#3'],
['#1', '#2', '#3']]
KG_seq =
[['nationality', 'placeOfBirth', 'locatedIn'],
['nationality', 'hasFather', 'nationality']]
我必须将同一索引中的值映射到字典,其中rule_seq的值作为上面列表中的键
我期望的输出是
输出
unify_dict =
{'#1': ['nationality'],
'#2': ['placeOfBirth', 'hasFather'],
'#3': ['locatedIn', 'nationality']}
我制作了一个字典,如下所示,通过对两个列表进行展平和压缩来检查字典中是否有键和值
我的代码如下
def create_unify_dict(rule_seq, KG_seq):
unify_dict = collections.defaultdict(list)
flat_aug_rule_list = list(itertools.chain.from_iterable(rule_seq))
flat_aug_KG_list = list(itertools.chain.from_iterable(KG_seq))
[unify_dict[key].append(val) for key, val in zip(flat_aug_rule_list, flat_aug_KG_list)
if key not in unify_dict.keys() or val not in unify_dict[key]]
return unify_dict
unify_dict = create_unify_dict(rule_seq, KG_seq)
有没有更简单的方法来获得我想要的结果
这将是我不使用模块的自制方法香草Python
输出
过于简化的版本
欠简化
您可以使用
collections
:您可以使用与第二层嵌套相同的
defualtdict
调用append输出:
相关问题 更多 >
编程相关推荐