【问题标题】:find the frequency of key, pair of dictionaries inside of a list查找列表中键、字典对的频率
【发布时间】:2021-01-19 08:14:54
【问题描述】:

我有一个列表中的字典集合。我想找到 key,pair 的频率,然后该频率将作为该列表中每个字典的键附加。
我经历了thisthis,但没有找到解决我的问题的方法。

我的sample_list是:

sample_list = [{'i': -2.0, 'q': 6.0}, {'i': 10.0, 'q': -4.0}, {'i': -5.0, 'q': -9.0},{'i': -2.0, 'q': 6.0},
{'i': -5.0, 'q': -9.0}, {'i': 4.0, 'q': -5.0}, {'i': 10.0, 'q': -4.0},{'i': 10.0, 'q': -4.0},
{'i': 4.0, 'q': 0.0}]

看来

{'i': -2.0, 'q': 6.0} appeared 2 times  
{'i': 10.0, 'q': -4.0} appeared 3 times  
{'i': -5.0, 'q': -9.0} appeared 2 times  
{'i': 4.0, 'q': -5.0} appeared 1 time  
{'i': 4.0, 'q': 0.0} appeared 1 time

我希望sample_list 的字典将此频率作为键(eg: z)。
新列表将是

sample_list_conv = [{'i': -2.0, 'q': 6.0, 'z':2}, {'i': 10.0, 'q': -4.0, 'z':3},
{'i': -5.0,'q': -9.0, 'z':2},{'i': -2.0, 'q': 6.0, 'z':2}, {'i': -5.0, 'q': -9.0, 'z':2},
{'i': 4.0, 'q': -5.0, 'z':1},{'i': 10.0, 'q': -4.0, 'z':3}, {'i': 10.0, 'q': -4.0, 'z':3},
{'i': 4.0, 'q': 0.0, 'z':1}]

我尝试过但失败了,不值得在这里添加,这就是我跳过它的原因。如果我说我需要一个解决方案来解决这个问题。而且,如果您认为格式(sample_list)不正确,您可以提出建议。我需要该列表来使用 JS 绘制图形。并绘制heatmap 我需要sample_list_conv

【问题讨论】:

    标签: python-3.x list dictionary


    【解决方案1】:

    创建一个新的字典,说 key_count_map 的 key 和 count。在这里创建 i 和 q 的键附加值。

    键看起来像 - "i_-2.0:q_6.0"

    如果 key_count_map 中不存在键,则向 key_count_map 添加新键,如果存在则将值设置为 1 - 将值增加 1。

    您通过迭代每个键和对应的值并将键拆分为实际键来创建最终结果

    key_count_map={}
    
    for item in sample_list:
        key = 'i_{}:q_{}'.format(item['i'], item['q'])
        if key_count_map.get(key):
            key_count_map[key] = key_count_map[key] + 1
        else:
            key_count_map[key] = 1
    
    
    result = [{'i': float(key.rsplit(':')[0].rsplit('_')[1]), 'q': 
    float(key.rsplit(':')[1].rsplit('_')[1]), 'z': value} for key, value in 
    key_count_map.items()]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 2014-03-14
      • 2021-08-24
      相关资源
      最近更新 更多