从冻结集字典中检索值 (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)]}
我有以下形式的冻结集字典:
{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)]}