【问题标题】:How can i get the full element name on a list如何获取列表中的完整元素名称
【发布时间】:2020-10-25 11:44:50
【问题描述】:

我有以下快速问题,希望你能帮助我。

我有一个列表my_list,其中有大约 900 个元素,所有元素都具有以下格式:

"###" + _ + "元素名称"

像这样: ['123_rop','456_tuy','789_wqw',......]

如何找到仅包含前 3 位数字的完整元素名称?

例如,我想知道以“123”开头的元素的全名。

结果必须是: result="123_rop"

列表中每个元素的前三个数字永远不会重复。

【问题讨论】:

  • 您可以为此执行 for 循环或维护一个字典,其中键为 "###",值为 "###" + _ + "the name of the element"(类似于 {'123':'123_rop', '456':'456_tuy'})以加快搜​​索速度。
  • 您可以使用列表理解和开头,stackoverflow.com/a/20461857/4985099
  • [x for x in my_list if x.split("_")[0]=='123']

标签: python list startswith


【解决方案1】:

试试看:

lst = ['123_rop','456_tuy','789_wqw',"123_hhj"]
[i for i in lst if "123" in i]

【讨论】:

  • 这不会给出像“hhk_123”这样的元素的所需输出,因为“123”在“hhk_123”中,但“hhk_123”不以“123”开头。
  • 是的,这是真的。但是我们有这种格式“###”+_+“元素的名称”
【解决方案2】:
def get_full_name(start_val)
    new_list = [elem for elem in my_list if elem.statswith(start_val)]
    return (new_list|'not found')

    

【讨论】:

    【解决方案3】:

    实际上,这是可行的

    def check_by_start(num):
        for i in list:
            if i.startswith(num):
                return i
    print(check_by_start("887"))
    

    但只有数字,如果我想获得一个以字母开头的元素,它不起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-27
      • 2023-02-24
      • 2015-09-10
      • 2018-11-12
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多