查找列表python

时间:2017-05-25 23:08:59

标签: python algorithm list

我有一个包含其他列表作为元素的列表。

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

例如,如果第一个列表中的任何元素包含第二个列表的“a”元素,那么输出列表应该是这样的:

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

同样,如果list包含'k',则输出如下:

['k',
         [2, 'deek', 'j', 'a', 'k'], 
         [3, 'bata', 'k', 'a', 'p'],
         [4,'farkha','v','m','k']
]

任何好的python方式都会受到高度赞赏。

3 个答案:

答案 0 :(得分: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']]]]

答案 1 :(得分: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" (制表符)和其他一些基于所需输出格式的字符

答案 2 :(得分: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']
]