组合两个字典,其中一个字典键是整数范围,第二个字典键是可能属于第一个键范围的整数

2024-04-24 03:59:32 发布

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

Python3相当陌生。你知道吗

我有两个由两个独立的CSV文件构造的字典。你知道吗

第一本词典的内容大致如下:

dict_FET = {2658451: "6.67e-05", 2565843: "1.513-05", etc....}

第二个字典是一个类似的键;值配对,但键是一系列整数。你知道吗

dict_FST = {range(2500000, 2600000): '0.924', range(2600000, 2800000): '.0694', etc..}

我希望将两个字典中的值合并到一个数组中,保留第一个字典中的键。在上面的例子中,我想要的字典是这样的:

dict_combined = {2565843: ['1.513e-05', '0.694'], 2658451: [6.67e-05,'0.924',], etc....

我想我需要构建一个循环,并尝试了一些类似于

dict_combined = {k: [dict_FET.get(k), dict_FST.get(k)] for k in keys if keys in range dict_FST.keys()}      

语法显然是不正确的,但我是一个正确的路径在这里?你知道吗


Tags: 文件csvinget字典etcrangekeys
3条回答

这是我能想到的最有效的方法。一个字典的理解似乎不可行,因为你想收集数据的方式,所以它需要更多的几行来完成。你知道吗

dict_FET = {2658451: "6.67e-05", 2565843: '1.513e-05'}
# Note: The following range values were scaled by 10x so there would be results.
dict_FST = {range(2500000, 2600000): '0.924', range(2600000, 2800000): '.0694'}

dict_combined = {}
for key, value1 in dict_FET.items():
    dict_combined.setdefault(key, [value1]).extend(
        value2 for interval, value2 in dict_FST.items() if key in interval)

print(dict_combined)

输出:

{2658451: ['6.67e-05', '.0694'], 2565843: ['1.513e-05', '0.924']}

简单for循环有时是最好的选择。你知道吗

dict_FET = {2658451: "6.67e-05", 2565843: "1.513-05"}
dict_FST = {range(2500000, 2600000): '0.924', range(2600000, 2800000): '.0694'}
dict_combined = {}

for fet_k, fet_v in dict_FET.items():
    for fst_k, fst_v in dict_FST.items():
        if fet_k in fst_k:
            dict_combined[fet_k] = [fet_v, fst_v]

print(dict_combined)

(注1:量程的10倍)

可能就这么简单吗?你知道吗

dict_combined = { k:[v,dict_FST[k] ] for k,v in dict_FET}

我不太明白您对dict_FST中索引间距相等的评论,因为ranges()是生成器。你可以把它们存为钥匙,但我不相信你在这里所描述的。你知道吗

假设你的第二个字典是稀疏填充的,也就是说它只有一些整数键在范围(x,y)内,你想在第一个匹配上配对,事情会变得更复杂。你知道吗

相关问题 更多 >