0

我有一个形式的冻结集字典:

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

我是否可以根据 freezeset 中的一个键来迭代值?

例子:

如果我提供值 12345,我想返回

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

如果我提供值 3245,我想返回

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

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

4

2 回答 2

1

如果你要做很多这样的事情,你可能想要从 转换{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)]}
于 2019-11-23T17:56:49.750 回答
0

你可以试试:

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)
于 2019-11-23T17:30:31.917 回答