在列表python中查找列表
我有一个包含其他列表作为元素的列表在列表python中查找列表,python,algorithm,list,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'] 例
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']
]
]
同样,如果列表包含“k”,则输出如下:
['k',
[2, 'deek', 'j', 'a', 'k'],
[3, 'bata', 'k', 'a', 'p'],
[4,'farkha','v','m','k']
]
非常感谢任何好的python方法。您可以这样做:
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']]]]
您可以测试字符串是否在列表中,如下所示:
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”(制表符)和一些其他字符,这些字符基于您所需的输出格式您能演示一下自己在解决这个问题上所做的努力吗?更新了我的代码。@MohamedIbrahim是否要测试
k
是否出现在任何元素中,即使是'deek'
等词也意味着包含了一行?或者,如果单字母k
出现在最后3个单字母字符串中,您是否只希望将其包括在内。否,我只希望元素k出现在列表中,不使用wordshow,我可以动态执行此操作,而无需在代码中输入“a”和“b”键manually@MohamedIbrahim你知道变量是如何工作的吗?谢谢。现在我明白了clearlyOh否。found()
函数计算布尔表达式,然后根据其值返回true或false。真的,found(a,key):在a
中返回key就足够了。@MohamedIbrahim:两者都是正确的,但一个比另一个短得多。
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']
]