【问题标题】:Finding a list in list python [closed]在列表python中查找列表[关闭]
【发布时间】:2017-05-25 23:08:58
【问题描述】:

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

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 方法都将受到高度赞赏。

【问题讨论】:

  • 你能证明自己任何努力解决这个问题吗?
  • 更新了我的代码。
  • @MohamedIbrahim 你想测试k 是否出现在任何元素中,即使是单词例如'deek' 是否意味着包含一行?还是只希望在最后 3 个单字母字符串中出现单个字母 k 时包含它。
  • 不,我只想在列表中出现元素 k 而不是单词

标签: python algorithm list


【解决方案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']]]]

【讨论】:

  • 我怎样才能动态地做到这一点而不必在代码中手动输入'a'和'b'键
  • @MohamedIbrahim 你知道变量是如何工作的吗?
  • 谢谢。现在我明白了
  • 哦,不。 found() 函数计算一个布尔表达式,然后根据其值返回真或假。真的,found(a, key): return key in a 就足够了。
  • @MohamedIbrahim:两者都是正确的,但一个比另一个短得多。
【解决方案2】:

您可以测试一个字符串是否在列表中,如下所示:

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”(制表符)和其他一些基于您想要的输出格式的字符

【讨论】:

    【解决方案3】:
    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']
    ]
    

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 2015-08-08
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2012-03-21
      相关资源
      最近更新 更多