基于两个数组生成复杂字典:检查元素存在性构造df3
解决方案:生成目标结构df3
我来帮你搞定这个需求!要得到你想要的df3结构,我们可以通过嵌套循环来实现,逻辑很直观,下面是具体的Python代码和解释:
df1 = ['c_1', 'd_1', 'f_1', 'h_1', 'i_1', 'n_1', 'v_1', 'm_1'] df2 = [['lia', 'f_1', 'n_1', 'v_1'], ['eli', 'f_1', 'n_1', 'v_1', 'm_1']] df3 = [] # 先遍历df1的每个元素,再处理df2里的每个用户 for item in df1: for sublist in df2: # 提取子列表里的用户名(比如lia、eli) user_name = sublist[0] # 提取该用户对应的元素集合(子列表从第2个元素开始) user_elements = sublist[1:] # 判断当前df1元素是否在用户的元素集合里,存在记1,否则记0 exists = 1 if item in user_elements else 0 # 把(元素,{用户名: 存在标记})的元组加入df3 df3.append( (item, {user_name: exists}) ) # 输出结果看看 print(df3)
代码逻辑拆解:
- 循环顺序匹配你的示例:先遍历
df1的每个元素,再对每个元素遍历df2的子列表,这样生成的df3顺序就和你给出的示例完全一致——先处理f_1对应lia,再n_1对应lia,接着v_1对应lia,然后是那些不存在的元素对应lia,之后再处理所有元素对应eli的情况。 - 提取用户和元素集合:每个
df2的子列表第一个元素是用户名,后面的是该用户关联的元素,我们把这两部分分开处理。 - 存在性判断:用简单的
in操作符判断元素是否在用户的集合里,生成1或0的标记,再组装成你需要的字典格式。
运行这段代码后,你就能得到完全符合需求的df3结构啦。如果需要调整顺序或者扩展功能(比如处理更多子列表),这个逻辑也很容易修改。
内容的提问来源于stack exchange,提问作者sara jones
相关产品推荐
相关产品推荐

