首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >附加Python列表

附加Python列表
EN

Stack Overflow用户
提问于 2014-05-30 10:40:47
回答 2查看 9K关注 0票数 2

编辑:添加更多信息

如何将新列表“附加”到已经压缩的列表中。这样做的主要原因是,我需要在字典中扫描并拆分任何具有特定字符的字段,并将结果列表添加到ziplist中。

代码语言:javascript
复制
dictionary = {
    'key1': 'testing'
    'key2': 'testing'
    'key3': '6-7-8',
    }
list1 = ['1','2','3']
list2 = ['3','4','5']
ziplist = zip(list1,list2)

for key, value in dictionary.iteritems():
    if '-' in value:
        newlist = value.split('-')
        ziplist.append(newlist)

for a,b,c in ziplist:
    print a,b,c

预期产出将是

代码语言:javascript
复制
1 3 6
2 4 7
3 5 8

使用上面的代码,我得到了以下错误。

代码语言:javascript
复制
for a,b,c in ziplist:
ValueError: need more than 2 values to unpack

我假设'newlist‘列表没有附加到ziplist中。为什么这不管用?

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-30 10:47:31

您需要实际查看您正在创建的内容:

代码语言:javascript
复制
>>> array1 = ['1','2','3']
>>> array2 = ['3','4','5']
>>> ziplist = zip(array1,array2)
>>> ziplist
[('1', '3'), ('2', '4'), ('3', '5')]

然后

代码语言:javascript
复制
>>> newlist = ['7', '8', '9'] # for example
>>> ziplist.append(newlist)
>>> ziplist
[('1', '3'), ('2', '4'), ('3', '5'), ['7', '8', '9']]

很明显,这不是你想要的。假设您不再访问array1array2,最简单的方法是再次使用zipziplist压平,然后添加newlist,然后再返回-zip

代码语言:javascript
复制
>>> flatlist = zip(*ziplist)
>>> flatlist
[('1', '2', '3'), ('3', '4', '5')] # almost back to array1 and array2
>>> flatlist.append(newlist)
>>> ziplist = zip(*flatlist)
>>> ziplist
[('1', '3', '7'), ('2', '4', '8'), ('3', '5', '9')]

或者,由于在过渡期间不需要压缩列表,所以始终收集平面列表,最后只收集zip

代码语言:javascript
复制
flatlist = [['1','2','3'], ['3','4','5']]

for value in dictionary.itervalues():
    if '-' in value:
        flatlist.append(value.split('-'))

for t in zip(*flatlist):
   print " ".join(map(str, t))

请注意,在ziplist中,每个元组中可能没有确切的3个项,所以我删除了这个假设。

票数 6
EN

Stack Overflow用户

发布于 2014-05-30 10:47:28

如果您不太关心合并列表的内部结构,则只需将附加列表zip到现有列表即可。这将包含嵌套元组(如((1, 3), 6) )的项,但您可以在迭代时解压这些项:

代码语言:javascript
复制
for (a, b), c in zip(ziplist, newlist):
    print a, b, c
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23952615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档