称为单个键并返回两个值

时间:2016-08-11 21:20:33

标签: python-3.x dictionary

我试图从一个键调用一个值但由于某种原因我得到两个值。我的词典中列出了它的值。

例如:

dict = {'HHH': ['HHH', '1', '2', '3', '4'], 'HHH2': ['HHH2', '1', '2', '3'], ...}

当我拨打钥匙时。我明白了:

print(dict['HHH'])
OUTPUT: ['HHH', '1', '2', '3', '4', 'HHH2', '1', '2', '3']

我想:

OUTPUT: ['HHH', '1', '2', '3', '4']

我如何得到这个?

1 个答案:

答案 0 :(得分:0)

我的猜测是,这是关于你如何构建字典的问题,而不是你如何编制索引的问题。

如果你实际上并没有像你所显示的那样使用文字,而是使用两个键添加一个最初为空的字典,然后附加值,如果两个键都引用相同的字典,你可能会得到这些结果

将您实际做的事情与此示例进行比较:

dct = {}  # it's a bad idea to use names of builtins like dict as variables
lst = []
dct['HHH'] = lst
dct['HHH2'] = lst  # this makes the dict have two references to the same list
dct['HHH'].extend(['HHH', 1, 2, 3, 4])
print(dct)  #  prints {'HHH': ['HHH', 1, 2, 3, 4]}
dct['HHH2'].extend(['HHH2', 1, 2, 3])  # this mutates the same list as the previous extend()
print(dct)  #  prints {'HHH': ['HHH', 1, 2, 3, 4, 'HHH2', 1, 2, 3], 'HHH2': [same list]}

要避免这种情况,您需要确保添加到字典中的列表是独立对象,而不是对同一列表的所有引用。例如,在我的示例代码中,您可以使用dct['HHH'] = []而不是使用lst变量。