Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Dictionary - Fatal编程技术网

Python:循环遍历字典列表并将值提取到新字典

Python:循环遍历字典列表并将值提取到新字典,python,loops,dictionary,Python,Loops,Dictionary,我需要在字典列表上循环并检查是否存在值。如果它存在,那么我从同一个字典中获取另一个值,并将其存储在另一个列表中的新字典中。我有的是这个 class_copy=[] for root, dirs, files in os.walk(files_path+"/TD"): for file in files: file_name=os.path.splitext(file)[0] for d in data_list: if d['id'

我需要在字典列表上循环并检查是否存在值。如果它存在,那么我从同一个字典中获取另一个值,并将其存储在另一个列表中的新字典中。我有的是这个

class_copy=[]
for root, dirs, files in os.walk(files_path+"/TD"):
    for file in files:
        file_name=os.path.splitext(file)[0]
        for d in data_list:
            if d['id'] == file_name:
                cc['class']=d['fic']
                class_copy.append(cc)
                break
所以我循环浏览了一些文件。数据列表是一个字典列表。这些词典都有一个与文件名匹配的“id”,因此当发现值为“id”的词典“d”时,我在词典“d”上取“fic”的值,并创建一个键为“class”的新词典来存储“fic”的值。然后我将这本词典存储在一个新的词典列表上,名为class_copy


问题是,在循环遍历所有字典之后,副本类中的所有字典都是相同的。我猜通过循环和更改d的实例,class_copy上的值也在更改,但是我如何才能保留这些值呢?有更好的方法吗?

您实际上不是在创建新词典,而是在更新现有词典:

cc['class']=d['fic']
只需更新与键
'class'
关联的值即可。将代码更改为:

cc = {'class': d['fic']}
这将创建字典的新实例


列表中所有条目最终都相同的原因是因为列表中的每个条目都是相同的字典。通过如图所示创建一个新词典,您将在列表中拥有您所期望的独立实例。

您不认为向我们展示您是如何初始化
class\u copy
的以及其中的对象会很好吗,所以我们可以告诉你,你对同一本字典有多个引用?@TigerhawkT3我添加了如何将class_copy初始化为空列表
class_copy.append({'class': d['fic']'})