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 - Fatal编程技术网

Python 为什么字典的键会在条目中?

Python 为什么字典的键会在条目中?,python,list,dictionary,Python,List,Dictionary,我有一个问题,在我看来,这是没有意义的。我正在定义一个字典并使用它生成一个列表,其中键是列表的第一个元素。但是当我运行它时,不仅创建了列表,而且修改了字典。我需要知道为什么会发生这种情况,以及在不修改字典的情况下,我可以用哪种方式来完成这个列表。一般代码示例如下所示: class report: def __init__(self): self.dict_content= self.get_dict() self.labels = self.get_la

我有一个问题,在我看来,这是没有意义的。我正在定义一个字典并使用它生成一个列表,其中键是列表的第一个元素。但是当我运行它时,不仅创建了列表,而且修改了字典。我需要知道为什么会发生这种情况,以及在不修改字典的情况下,我可以用哪种方式来完成这个列表。一般代码示例如下所示:


class report:
    def __init__(self):
        self.dict_content= self.get_dict()
        self.labels = self.get_labels()

    def get_dict(self):

        dict_content = dict(A1 = ['a', 'b', 'c'], A2 = ['d', 'e', 'f'])

        return dict_content

    def get_labels(self):
        
        labels = []
        
        for item in self.dict_content.items():
            new_items = item[1]
            new_items.insert(0, item[0])
            labels.append(new_items)
            
        return labels
呼叫控制台

r = report()

labels = r.labels
print(labels)
[['A1', 'a', 'b', 'c'], ['A2', 'd', 'e', 'f']]

dict_content = r.dict_content
print(dict_content)
{'A1': ['A1', 'a', 'b', 'c'], 'A2': ['A2', 'd', 'e', 'f']}
如果我注释行
self.labels=self.get_labels()
并执行最后的操作,我会得到:

r = report()
dict_content = r.dict_content
print(dict_content)
{'A1': ['a', 'b', 'c'], 'A2': ['d', 'e', 'f']}
我所期望的是:

r = report()

labels = r.labels
print(labels)
[['A1', 'a', 'b', 'c'], ['A2', 'd', 'e', 'f']]

dict_content = r.dict_content
print(dict_content)
{'A1': ['a', 'b', 'c'], 'A2': ['d', 'e', 'f']}
发生了什么事

在这里,
new\u items
,尽管名称不同,但它不是一个新列表,而是对
dict\u content
中包含的原始列表的引用

通过使用其
insert
方法,您可以修改此列表,这将在以后查看
dict\u内容时反映出来

您希望创建一个新列表,而不是修改原始列表。例如,通过连接:

for item in self.dict_content.items():
    new_items = [item[0]] + item[1]
    labels.append(new_items)
在这里,
new\u items
,尽管名称不同,但它不是一个新列表,而是对
dict\u content
中包含的原始列表的引用

通过使用其
insert
方法,您可以修改此列表,这将在以后查看
dict\u内容时反映出来

您希望创建一个新列表,而不是修改原始列表。例如,通过连接:

for item in self.dict_content.items():
    new_items = [item[0]] + item[1]
    labels.append(new_items)

你能把你期望的也发出来吗?我有一个很好的猜测,但我不想假设。我希望它会像上次输入显示的那样。我正在编辑它,这样它可以更清晰。你也可以发布你希望它是什么吗?我有一个很好的猜测,但我不想假设。我希望它会像上次输入显示的那样。我正在编辑它,以便更清晰。