具有多个dict的操作

2024-03-29 14:35:29 发布

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

主要的问题是我如何迭代/指示正确使用两个dict? 我已经给出了两个要比较的dict。如果两者中的键i相同,则根据给定的函数执行操作。结果进入另一个dict(dict1)。如果其中一个d1 or d2包含键i,则该值进入dict2。返回值是tup = (dict1, dict2)。下面是一个例子。你知道吗

If f(a, b) returns a + b
d1 = {1:30, 2:20, 3:30, 5:80}
d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
then dict_interdiff(d1, d2) returns ({1: 70, 2: 70, 3: 90}, {4: 70, 5: 80, 6: 90})

我正在努力寻找正确的方法来正确地指出这两个dicts d1和d2。这是我的密码:

def h(a, b):
    return a > b    

d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
d1 = {1:30, 2:20, 3:30, 5:80}

def dict_interdiff(d1, d2):
    dict1 = {}
    dict2 = {}
    for i in d1:
        if i in d1 #and d2:
            dict1[i] = h(d1[i], d2[i])
        else:
            dict[i] = d1[i] #or d2[i]      
    tup = (dict1, dict2)
    return tup

我是否必须在d1和d2上循环(for i in d1 and d2:)?似乎我必须以某种方式整合两个给定的dict,使for循环工作。你知道吗

谢谢你的提示!你知道吗


Tags: orand函数inforreturndefdict
2条回答

使用^{}获取dicts中所有键的iterable。你知道吗

from itertools import chain

def h(a, b):
    return a > b

d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
d1 = {1:30, 2:20, 3:30, 5:80}

def dict_interdiff(d1, d2):
    dict1 = {}
    dict2 = {}
    for key in set(chain(d1, d2)):
        if key in d1 and key in d2:
            dict1[key] = h(d1[key], d2[key])
        else:
            dict2[key] = d1.get(key) or d2.get(key)
    return dict1, dict2
import itertools
def interdict(d1,d2): 
    dict1 = {}
    dict2 = {}
    for i in set(itertools.chain(d1, d2)):
        if i in d1 and i in d2:
            #whatever
        elif i in d1:
            #not in d2
        else:
            #not in d1

set除去重复项。itertools.chain组合字典中的两个键列表

相关问题 更多 >