将列表值添加到dict键,并将预先存在的列表作为其值

时间:2016-05-25 17:11:48

标签: python

如果我有一个列表列表和一个列表作为值的字典:

ll = [['wed', 'thurs'], ['fri', 'sat', 'sun']]
d = {'week1':['mon', 'tues']}

如何在同一个密钥中添加其他列表? 这样我得到了:

new_d = { 'week1': ['mon', 'tues'], ['wed', 'thurs'], ['fri', 'sat', 'sun'] }

new_d = { 'week1': (['mon', 'tues'], ['wed', 'thurs'], ['fri', 'sat', 'sun']) }

如果我这样做:

 for item in ll:
    new_d['week1'].append(item)

我结束了类似的事情:

{'week1':['mon', 'tues', ['wed', 'thurs'], ['fri', 'sat', 'sun']] }

这不是我想要的

2 个答案:

答案 0 :(得分:0)

构建一个 new 元组,将旧的作为嵌套列表加上其他两个。由于您希望整个结果都是元组,因此您还必须将ll转换为元组:

new_d = {}
new_d['week1'] = (d['week1'],) + tuple(ll)

这与在字典之外构建元组没什么不同:

>>> ll = [['wed', 'thurs'], ['fri', 'sat', 'sun']]
>>> d = {'week1':['mon', 'tues']}
>>> d['week1']
['mon', 'tues']
>>> (d['week1'],) + tuple(ll)
(['mon', 'tues'], ['wed', 'thurs'], ['fri', 'sat', 'sun'])

如果您希望它是一个列表而不是郁金香,请构建:

new_d['week1'] = [d['week1']] + ll

答案 1 :(得分:0)

你几乎得到了它。关键信息是,字典的需要是单个对象。

在上面的示例中,您将一些列表对象附加到列表中,为您提供您所描述的列表,如下所示:

[ 'mon',
  'tues',
  ['wed', 'thur'],
  ['fri', 'sat', 'sun']
]

所以现在你必须做出选择。如果您希望字典的是列表列表,那么您希望将初始字典作为列表列表,只需其中的单一清单。这样可以将您的示例更改为以下内容(请注意那里的双括号 - 列表中的单个列表):

d = {'week1':[['mon', 'tues']]}

现在,当您附加到时,您会将新列表对象附加到列表中作为值,从而为您提供如下所示的结构:

[ ['mon', 'tues'],
  ['wed', 'thur'],
  ['fri', 'sat', 'sun']
]