【问题标题】:Check if elements of one list are in elements of other sub-list检查一个列表的元素是否在另一个子列表的元素中
【发布时间】:2021-08-24 16:40:15
【问题描述】:

我正在使用 Faker 库。

from faker import Faker
fake = Faker()

我有一个子列表(每个 2 个元素);给出数据框的列名,以及函数调用本身。


所有函数名的列表,不包括以“_”开头的函数名:

my_list = [[m, 'fake.'+m+'()'] for m in dir(fake) if m[0] != '_']
my_list
>>> [['add_provider', 'fake.add_provider()'],
 ['address', 'fake.address()'], ...

现在,我想在同一个 for 循环中添加另一个条件,不包括函数名。

尝试的解决方案:

exclude = ['add_provider']
fake_cols = [[m, 'fake.'+m+'()'] for m in dir(fake) if function_name in exclude or function_name[:1] == "_"]
fake_cols

输出为空:

[]

任何更简洁的解决方案将不胜感激。

【问题讨论】:

  • 只是摆脱任何?这行得通吗?
  • 它仍然在我的“排除”列表中包含“add_provider”方法名称。上面最新的代码和输出
  • [m, 'fake.'+m+'()' m 也有一些奇怪的地方是列表吗?
  • m 是方法的名称
  • 所以 my_list 完全构建为 dir(fake) ?

标签: python string list for-loop substring


【解决方案1】:

也许稍微大修一下就可以了,看看以下,如果这符合您的目标:

import faker

faker = faker.Faker()

exclude = ["add_provider", "address"]
faker_functions ={}
for function_name in dir(faker):
    if function_name in exclude or function_name[:1] == "_":
        continue
    try:
        faker_functions[function_name] =  getattr(faker, function_name)
    except:
        continue

def get_list_of_fake_functions():
    return list(faker_funcktions.keys())

def get_fake(fake_function):
    return faker_functions[fake_function]()

my_list =  [[key, "faker."+ key+ "()"] for key in faker_functions.keys()]
my_list

如预期的错误,因为已排除:

get_fake("zipcode_plus4")
KeyError: 'zipcode_plus4'

否则结果

get_fake("zipcode_plus4")
Out[38]: '71875-8723'

我的列表

my_list[:10]
Out[57]: 
[['administrative_unit', 'faker.administrative_unit()'],
 ['am_pm', 'faker.am_pm()'], ...

【讨论】:

  • 这给我一个空的dict{}。我不认为try-catch 是必要的。我认为我的问题在于我的for loopif condition。我确保我的 Faker 实例与您的实例名称相同。
  • 这不能产生一个空字典,我用上面的代码得到了所有函数的完整字典
  • 你能执行我的截图看看,如果你能执行get_fake("zipcode_plus4")
  • 现在得到一个输出。但是,这与我的要求相去甚远。我在帖子中解释的布局是我需要的。我想这与我的 if 条件有关。
  • 我添加了一个my_list 变量,你需要这个吗?
猜你喜欢
  • 2022-01-06
  • 1970-01-01
  • 2012-08-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 2018-05-13
  • 2021-03-02
相关资源
最近更新 更多