【问题标题】:Python: Find difference of dictionary's key[value] with other values and return the id which has the minimum differencePython:查找字典的 key[value] 与其他值的差异并返回差异最小的 id
【发布时间】:2017-07-02 10:36:33
【问题描述】:

我一直在努力研究如何获取与特定值具有最小差异的字典的键(id)。
例如,

我有一本字典,

dummy_w = {'Time': 1006120000,'T_id' : ''} 

以及以下,

dummy_R001 = {'Filename':"home/abc/de.csv",'Time':1006090000,'t_id':'x'}   
dummy_R002 = {'Filename':"home/abc/df.csv",'Time':1006100000,'t_id':'y'}  
dummy_R003 = {'Filename':"home/abc/d.csv",'Time':1026030000,'t_id':'z'}  
dummy_R004 = {'Filename':"home/abc/ef.csv",'Time':1026080000,'t_id':'p'}  
dummy_R005 = {'Filename':"home/abc/f.csv",'Time':1026120000,'t_id':'q'}  

我想根据与五个字典(dummy_R001 到 _R005)时间中每一个的时间值的差异来为这个 dummy_w 分配 T_id。

我想分配具有最小绝对值(时间差)的那个。

在这种情况下,分配给 dummy_w[T_id] 的 id 应该是 'y'。

任何建议将不胜感激。谢谢。

【问题讨论】:

  • dummy_R001 等是变量而不是列表元素,我什至不想尝试这个...

标签: python loops dictionary key


【解决方案1】:

我会在min 函数中使用key 关键字参数:

>>> result = min(list_of_all_dicts, key=lambda d: abs(d['Time'] - dummy_w['Time']))
>>> result['t_id']
'y'

【讨论】:

    【解决方案2】:

    您可以使用单行方法迭代所有 'Time' 值,计算 abs() 差异,并获取 min() 差异。然后赋值给dummy_w['T_id']

    min_diff = min((abs(dummy_w['Time']-d['Time']),d['t_id']) for d in [dummy_R001,dummy_R002,dummy_R003,dummy_R004,dummy_R005])
    # (20000, 'y')
    
    dummy_w['T_id'] = min_diff[1]
    # {'T_id': 'y', 'Time': 1006120000}
    

    请注意,我不确定dummy_R001 等来自哪里,但请考虑从嵌套字典开始,其中这些是键而不是变量名。

    【讨论】:

    • @Chris_Rands 哇!你是个天才!!顺便说一句,这是特定文件夹下文件的元数据记录,需要与另一个测量的输出(文件记录)匹配。我会尝试嵌套字典!非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多