我试图从一个键调用一个值但由于某种原因我得到两个值。我的词典中列出了它的值。
例如:
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']
我如何得到这个?
答案 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
变量。