【问题标题】:Retrieve values from a frozen set dictionary (python)从冻结集字典中检索值(python)
【发布时间】:2019-11-23 17:17:18
【问题描述】:

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

{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

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

【问题讨论】:

    标签: python loops dictionary set frozenset


    【解决方案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)]}
    

    【讨论】:

      【解决方案2】:

      你可以试试:

      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)
      

      【讨论】:

        猜你喜欢
        • 2015-06-10
        • 1970-01-01
        • 2021-09-23
        • 2022-01-19
        • 1970-01-01
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多