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

2024-04-27 02:33:18 发布

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

我有一本固定词典,格式如下:

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

我是否可以基于frozenset中的一个键对值进行迭代

示例:

如果提供值12345,则返回frozenset({123453245}):45.95948791503906, 冻结集({1234512804138}):48.996036529541016

如果提供值3245,则返回frozenset({123453245}):45.95948791503906,frozenset({32459876}):50.67853927612305

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


Tags: 示例字典格式词典frozenset对值
2条回答

如果要做很多这方面的工作,您可能需要从{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)]}

您可以尝试:

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)

相关问题 更多 >