如何使用现有dict的名称来创建新dict?

2024-04-29 11:55:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有名为BgfArf等的字典,其中有多个dataframes。你知道吗

我现在正在创建一个函数,该函数将用户使用字典的名称作为参数,然后在该数据帧中隔离以“\u with \u lof”结尾的dataframes。现在,隔离的dfs必须存储在一个新的空dict中,并且dict必须具有如下名称格式:'dictionary'_filtered.

例如:

字典Bgf具有以下dfs

s24_df
s25_df
s26_df
s27_df
dataframes
merged_df
s7_with_lof
s1_with_lof

现在,我想隔离名称包含字符串_with_lofdfs。这里是s7和s1的匹配。现在这两个dfs必须存储在一个新字典中,该字典的名称必须是Bgf_filtered。你知道吗

类似地,如果用户提供Arf作为参数,那么新的字典名必须是Arf_filtered。你知道吗

我的代码:

def filtered(dictionary):
    filter_string = '_with_lof'
    **dictionary**_filtered = {k: v for (k, v) in Bgf.items() if filter_string in k}

现在,当用户执行以下操作时:

filtered('Bgf')

必须在函数的第三行中使用Bgf,以创建新的dict作为Bgf_filtered。你知道吗

有办法吗?你知道吗


Tags: 函数用户名称df参数dictionary字典with
1条回答
网友
1楼 · 发布于 2024-04-29 11:55:00

你所做的一切充满了糟糕代码的味道,像这样创建新的变量是不正常的。任何在你之后读你代码的人都会因此诅咒你。你知道吗

但你还是可以这样做:

def filtered(dictionary_name):
    filter_string = '_with_lof'
    globals()["%s_filtered" % (dictionary_name)] = {k: v for (k, v) in globals()[dictionary_name].items() if filter_string in k}

但是,普通代码将返回过滤后的字典:

def filtered(dictionary):
    filter_string = '_with_lof'
    return {k: v for (k, v) in dictionary.items() if filter_string in k}

然后像这样使用:

Bgf_filtered = filtered(Bgf)

相关问题 更多 >