2017-05-25 18 views
3

私は他のリストを要素として含むリストを持っています。リストのpythonでリストを見つける

mylist=[ 
     [1, 'Asfoor', 'a', 'b', 'c'], 
     [2, 'deek', 'j', 'a', 'k'], 
     [3, 'bata', 'k', 'a', 'p'], 
     [4,'farkha','v','m','k'] 
     ] 

は今、私は上記のリスト内の別のリスト要素「A」と「K」の出現を見つけて、特定の形式である出力を必要とします。例えば

second list=['a','k'] 

最初のリストの任意の要素が第二のリストの「」の要素が含まれている場合、出力リストは、次のようなものでなければなりません:リストは「K」を含んでいる場合、

['a', 
    [ 
     [1, 'Asfoor', 'a', 'b', 'c'], 
     [2, 'deek', 'j', 'a', 'k'], 
     [3, 'bata', 'k', 'a', 'p'] 
    ] 
] 

と同様に

良いpythonの方法はそれを行うには非常に感謝しています。

+5

あなた自身で解決するために*何らかの努力を実証することができますか? –

+0

が自分のコードを更新しました。 –

+0

@MohamedIbrahim「k」が要素のいずれかに出現しているかどうかをテストしますか? '' deek ''は行が含まれていたことを意味しますか?または、最後の3文字の文字列に1文字の「k」が含まれている場合にのみ、その文字列が含まれるようにしますか? –

答えて

1

あなたはこのような何かを行うことができます。

def found(a, key): 
    return key in a: 


keys = ['a', 'k'] 

final = [] 
for j in keys: 
    final.append([j , [k for k in mylist if found(k, j)]]) 

# Or simply within list comprehension: 
# final = [[j , [k for k in mylist if found(k, j)]] for j in keys] 


print(final) 

出力:

[['a', 
    [[1, 'Asfoor', 'a', 'b', 'c'], 
    [2, 'deek', 'j', 'a', 'k'], 
    [3, 'bata', 'k', 'a', 'p']]], 
['k', 
    [[2, 'deek', 'j', 'a', 'k'], 
    [3, 'bata', 'k', 'a', 'p'], 
    [4, 'farkha', 'v', 'm', 'k']]]] 
+0

どのようにして手動でコードに 'a'と 'b'キーを入力せずに動的に行うことができますか? –

+2

@MohamedIbrahimあなたは変数の仕組みを知っていますか? – alex

+0

@MohamedIbrahim、今すぐご覧ください。私はちょうど与えられたキーでforループを追加しました。 –

0

次のように文字列がリストにある場合は、テストすることができます。

for row in my_list: # finding 'a' in list 
    if 'a' in row: 
     print(row) 

for row in my_list: # finding 'k' in list 
    if 'k' in row: 
     print(row) 

行を印刷"\ t"(タブ)と希望する出力形式に基づくその他の文字を使用する必要があります

0
print([sublist for sublist in mylist if 'a' in sublist]) 
# returns: 
[ 
    [1, 'Asfoor', 'a', 'b', 'c'], 
    [2, 'deek', 'j', 'a', 'k'], 
    [3, 'bata', 'k', 'a', 'p'] 
] 
関連する問題