我有一个包含其他列表作为元素的列表。
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方式都会受到高度赞赏。
答案 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']
]