从两个键组生成复杂的字典

时间:2018-04-17 01:46:28

标签: python dictionary

我有df1df2。对于df1中的每个元素,我想检查它是否存在于df2并打印df3

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=[('f_1', {'lia': 1}), ('n_1', {'lia': 1}), ('v_1', {'lia': 1}),
     ('c_1', {'lia': 0}), ('d_1', {'lia': 0}), ('h_1', {'lia': 0}), 
     ('i_1', {'lia': 0}), ('m_1', {'lia': 0}), ('f_1', {'eli': 1}),
    ...]

我尝试了一些迭代,但它没有奏效。这是我的代码。

def st_pl(line, df1):    
 ln=line    
 st=df1    
 l = ln[0]    
 if l:    
  dict_l = {l: 1}    
 if not l:    
  dict_l = {l: 0}    
  li_st = []    
 size = len(ln)    
 for i in range(1, size):    
  tup = (ln[i], dict_l)    
  li_st.append(tup)    
  return li_st

1 个答案:

答案 0 :(得分:0)

您可以尝试这种方法并从中获取帮助:

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']]


final_ist=[]

for i in df1:
    for j in df2:
        if i in j:
            final_ist.append((i,{j[0]:1}))
        else:
            final_ist.append((i,{j[0]:0}))

print(final_ist)

输出:

    [('c_1', {'lia': 0}), ('c_1', {'eli': 0}), ('d_1', {'lia': 0}), 
    ('d_1', {'eli': 0}),('f_1', {'lia': 1}), ('f_1', {'eli': 1}), 
    ('h_1', {'lia': 0}), ('h_1', {'eli': 0}),('i_1', {'lia': 0}), 
    ('i_1', {'eli': 0}),('n_1', {'lia': 1}), ('n_1', {'eli': 1}), 
    ('v_1', {'lia': 1}), ('v_1', {'eli': 1}), 
    ('m_1', {'lia': 0}), ('m_1', {'eli': 1})]