在python 2.7中向字典添加列表

在python 2.7中向字典添加列表,python,python-2.7,Python,Python 2.7,如何将列表添加到词典? 我有一本字典: >>> data = {} >>> myfile='file.txt' >>> data.update({myfile:['parama','y']}) >>> data {'file.txt': ['parama', 'y']} 我想在键'file.txt'中添加另一个touple,这样结果将是 {'file.txt': (['parama', 'y'],['paramb','ab

如何将列表添加到词典?

我有一本字典:

>>> data = {}
>>> myfile='file.txt'
>>> data.update({myfile:['parama','y']})
>>> data
{'file.txt': ['parama', 'y']}
我想在键'file.txt'中添加另一个touple,这样结果将是

{'file.txt': (['parama', 'y'],['paramb','abc'])}
我尝试更新此特定密钥,如下所示:

data['file.txt'].update(['paramb','abc'])
>>> d['filename1']['parama']
'A'
但有一个错误:

Traceback (most recent call last):
  File "<pyshell#51>", line 1, in <module>
    data['file.txt'].update(['paramb', 'y'])
AttributeError: 'list' object has no attribute 'update'
>>> 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
数据['file.txt'].update(['paramb','y'])
AttributeError:“列表”对象没有属性“更新”
>>> 

如何向字典中添加列表?

我想您想要的是一个键为文件名的字典,其值本身就是键为参数名的字典。像这样:

d = {
    'filename1': {
        'parama': 'A',
        'paramb': '22' },
    'filename2': {
        'parama': 'Z'}
}
这将允许您访问如下值:

data['file.txt'].update(['paramb','abc'])
>>> d['filename1']['parama']
'A'
如果要获取
filename1
的所有参数:

>>> d['filename1']
{'parama': 'A', 'paramb': '22'}
>>> for k, v in d['filename1'].items():
...     print('{}: {}'.format(k, v))
parama: A
paramb: 22

如果是这样的话,你会在问到问题的关键之前写下。与此相反:

data.update({myfile:['parama','y']})
…您想要:

data[myfile]['parama'] = 'y'
然而,这里有一个小问题。如果这是您第一次看到
myfile
的参数,那么还没有
数据[myfile]
。要解决此问题,可以使用
setdefault
方法:

data.setdefault(myfile, {})['parama'] = 'y'

或者你可以将
data
a
collections.defaultdict(dict)
而不是普通的
dict

这不是你试图添加的元组,它是一个列表…首先,
update
是dict上的一个方法,而不是列表上的,而
data['file.txt']
是一个列表,没有任何方法可以将单个列表转换为两个列表的元组。你可以用两个列表的元组来替换一个列表,比如
data['file.txt']=(data['file.txt']、['paramb'、'abc'])
,但是很难想象这一行是写任何东西的最佳方式……如果你能解释你在这里实际想做什么,它可能会有所帮助。如果你需要改变一些东西,那么你不应该使用元组,因为它们是不可变的。如果你把它作为一个列表,就像现在的值一样,
append
那么糟糕吗?最后是列表列表。im将文件读入1字典:我希望结果是file1,parama,“some text”,然后是下一行file2,parama,“other text”等等