尝试通过第二个元素的值调用元组的第一个元素(在循环内)

Trying to call the first element of a tuple by the value of the second element (within a loop)

标题有点令人困惑,但我实际上是在尝试通过调用 y 的值来存储元组 (x,y) 的名称 x。元组在一个列表中,一共有三个。但是,此数据可能会更改,因此我希望此循环能够处理任何类型的列表长度,只要表单以元组形式出现即可。此外,我的元组采用 (str, [list]) 形式。这是我的代码示例。

key, val = list(d.keys()), list(d.values())
for i in val:
    if i == group_ids[0]:
        for x,y in list(d.items()):
            if y == i:
                print(x,y)

我之前创建了一个 defaultdict 以便以 (str, [list]) 格式访问我的元组列表,因为 ipywidgets8 不再接受字典。在小部件界面中基于 str 成功选择值列表后,我希望存储所选列表的名称,以便我可以根据它们各自的名称保存每个文件。我知道使用 pandas 数据框,您可以使用 .loc 根据另一列的值调用一列的值,我正在尝试对我的元组列表做类似的事情,但不知道如何做。 group_ids 变量是从 ipywidgets 按钮接收到的选定值列表。我必须调用 [0] 位置,因为它已经用双括号存储了。更简单地说,我想要(这不是任何编码语言,我的大脑如何最好地用人类语言表达它):

FOR i IN val,
if i == group_ids[0]
PRINT x of key at the index where i in val is found  

我希望这个解释是清楚的。我觉得这不应该那么难弄清楚,但出于某种原因我不能。

编辑:

我的数据样本

group_ids = [[5876233, 5883627, 5891029, 5892881, 5896571, 5900242, 5902043, 5905766, 5905796, 5913064, 5913075, 5913080, 5914875, 5920356, 5924048, 5925824, 5927655, 5929456, 5929479, 5931307, 5934950, 5936704, 5940344, 5943972, 5944002, 5945785, 5947627, 5951172, 5951181, 5954751, 5958339, 5958354, 5958358, 5965416, 5965424, 5967145, 5968843, 5972099, 5978640, 5981887, 5983501, 5993193, 5967178, 5967171, 5963649, 5951209, 5929476, 5958331, 5938533, 5933134, 5918577, 5958359]]

list(d.items()) = [('Libraries', [5876233, 5883627, 5891029, 5892881, 5896571, 5900242, 5902043, 5905766, 5905796, 5913064, 5913075, 5913080, 5914875, 5920356, 5924048, 5925824, 5927655, 5929456, 5929479, 5931307, 5934950, 5936704, 5940344, 5943972, 5944002, 5945785, 5947627, 5951172, 5951181, 5954751, 5958339, 5958354, 5958358, 5965416, 5965424, 5967145, 5968843, 5972099, 5978640, 5981887, 5983501, 5993193, 5967178, 5967171, 5963649, 5951209, 5929476, 5958331, 5938533, 5933134, 5918577, 5958359]), ('Sport Facilities', [5812360, 5817970, 5818061, 5821851, 5823750, 5823751, 5827499, 5829344, 5829423, 5831312, 5833208, 5838752, 5840647, 5842526, 5842539, 5842575, 5842583, 5844396....)]

d.keys = dict_keys(['Libraries', 'Sports Facilities', 'Youth Facilities'])

我想要在 group_ids 变量

中看到的 ID 列表的相应键

所以我认为你只需要:

for k, v in d.items():
    if v[0] == group_ids[0]:
        print(k, v)

检查 if v == group_ids 会更精确,但我假设所有 ID 都不同。