Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python字典与列表作为值进行比较_Python_List_Dictionary_Steam - Fatal编程技术网

将Python字典与列表作为值进行比较

将Python字典与列表作为值进行比较,python,list,dictionary,steam,Python,List,Dictionary,Steam,我正在为Steam编写一个解析器机器人,它将跟踪Steam用户的库存中哪些项目的来去。我编写了一个代码,获取用户的所有项目,并以带有嵌套列表的字典的形式返回,其中KEY=user NAME,VALUE=ITEM NAME及其数量。现在我需要比较Data1和Data2(更新的数据) 例如,一个新项目出现在Data2中,我需要将其写入第三个字典,保留密钥。如果项目离开Data2(这意味着这些项目不再在用户的库存中),则必须执行相同的操作 使用集合 result_addition = {d:list(

我正在为Steam编写一个解析器机器人,它将跟踪Steam用户的库存中哪些项目的来去。我编写了一个代码,获取用户的所有项目,并以带有嵌套列表的字典的形式返回,其中KEY=user NAME,VALUE=ITEM NAME及其数量。现在我需要比较Data1和Data2(更新的数据)

例如,一个新项目出现在Data2中,我需要将其写入第三个字典,保留密钥。如果项目离开Data2(这意味着这些项目不再在用户的库存中),则必须执行相同的操作

使用
集合

result_addition = {d:list(set(Data2[d]) - set(Data1[d])) for d in Data2.keys()}
print(result_addition)

>> {'user1': [('M4A4', 1)], 'user2': [('GLOCK-18', 1)]}


result_missing = {d:list(set(Data1[d]) - set(Data2[d])) for d in Data2.keys()}
print(result_missing )

>> {'user1': [], 'user2': []}

您是否在同一数据字典中为单个用户提供了重复的库存项目?@chsws是的,我有重复的元素,但另一个函数处理它们并将所有重复项返回到int
[('AK-47',3)]
3-显示项目的数量。通过“新建项目”,您是否会包括元组中的数字是否增加?如果接受下面的答案,我想不会吧?
Result = {
              
            'user1': [('M4A4', 1)], 
            'user2': [('GLOCK-18', 1)] 

        }
result_addition = {d:list(set(Data2[d]) - set(Data1[d])) for d in Data2.keys()}
print(result_addition)

>> {'user1': [('M4A4', 1)], 'user2': [('GLOCK-18', 1)]}


result_missing = {d:list(set(Data1[d]) - set(Data2[d])) for d in Data2.keys()}
print(result_missing )

>> {'user1': [], 'user2': []}
def dict_diff(dict_1, dict_2):
    keys = set(dict_1.keys()).union(set(dict_2.keys()))
    result = {}
    for key in keys:
        if key not in Data1:
            result[key] = Data2[key]
            continue
        if key not in Data2:
            result[key] = Data1[key]
            continue
        
        diff1 = set(Data2[key]).difference(set(Data1[key]))
        diff2 = set(Data1[key]).difference(set(Data2[key]))
        
        
        result[key] = list(diff1.union(diff2))

    return result
                
    
dict_diff(Data1, Data2)