从冻结集字典中检索值 (python)

Retrieve values from a frozen set dictionary (python)

我有以下形式的冻结集字典:

{frozenset({12345, 3245}): 45.95948791503906,
 frozenset({12345, 12804138}): 48.996036529541016,
 frozenset({3245, 9876}): 50.67853927612305,

我可以根据 frozenset 中的一个键来迭代值吗?

示例:

如果我提供值12345,我想return

frozenset({12345, 3245}): 45.95948791503906,
frozenset({12345, 12804138}): 48.996036529541016

如果我提供值 3245,我想 return

frozenset({12345, 3245}): 45.95948791503906, frozenset({3245, 9876}): 50.67853927612305

基本上,我想基于多键冻结集字典中的一个键进行迭代

你可以试试:

my_dict = {frozenset({12345, 3245}): 45.95948791503906,
 frozenset({12345, 12804138}): 48.996036529541016,
 frozenset({3245, 9876}): 50.67853927612305}



def retrieve_dict(number_I_want):
  final = []
  for key, value in my_dict.items():
    for i in key:
      if i == number_I_want:
        final.append(key)
  print(final)

retrieve_dict(12345)

如果您要做很​​多这样的事情,您可能需要从 {frozenset([k]):v} 转换为 {k:[(frozenset(), v)]}。结果是答案都是d[v]。如果你只需要做一点并且需要以其他形式保留数据,请使用其他答案中的循环。

要执行此转换:

from collections import defaultdict

d = {frozenset({12345, 3245}): 45.95948791503906,
 frozenset({12345, 12804138}): 48.996036529541016,
 frozenset({3245, 9876}): 50.67853927612305}
o = defaultdict(list)
for p in d.items():
    for k in s[0]:
        o[k].append(p)

这导致 dict(o) 为:

{3245: [(frozenset([3245, 12345]), 45.95948791503906),
        (frozenset([3245, 9876]), 50.67853927612305)],
 9876: [(frozenset([3245, 9876]), 50.67853927612305)],
 12345: [(frozenset([12345, 12804138]), 48.996036529541016),
         (frozenset([3245, 12345]), 45.95948791503906)],
 12804138: [(frozenset([12345, 12804138]), 48.996036529541016)]}