2017-06-02 111 views
0

作出新的名单上有两个列表的Python:取两个列表,并通过将它们合并

list1 = ["john", "kelvin", "harry", "rob", "jenny", "donne", "justin", "sam", "peter", "kitty"] 
list2 = ["radha", "mohan", "pankaj", "sikha", "samarth"] 

我想合并这两个的方式,我得到的词典列表名单中应该有两个来自list1的人员和来自list2的1个人员。

example = [{"john", "kelvin", "radha"}, {"harry", "rob", "mohan"}, ......] 
+4

你到目前为止尝试过什么? – khelwood

+7

如果你想制作字典,钥匙在哪里? –

+0

组= [] 为i的范围((LEN(list1的)+ LEN(列表2))/ 3): \t为J,K中Bteam,Pteam: \t \t团伙= {} –

回答

1

这里就是要为你的榜样输入工作:

list1 = ["john", "kelvin", "harry", "rob", "jenny", "donne", "justin", "sam", "peter", "kitty"] 
list2 = ["radha", "mohan", "pankaj", "sikha", "samarth"] 

list3 = [] 

for i in xrange(len(list2)): 
    temp_list = [list1[2*i], list1[1+(2*i)], list2[i]] 
    list3.append(temp_list) 


print list3 

python 2.x工作,只是改变print声明,使其在python 3.x

干杯

在这里工作是输出:

套2组+ 1的元素

[['john', 'kelvin', 'radha'], ['harry', 'rob', 'mohan'], ['jenny', 'donne', 'pankaj'], ['justin', 'sam', 'sikha'], ['peter', 'kitty', 'samarth']]

+1

@amanroy,这会给你一个嵌套列表,这应该足以供你使用:) – TheDarkKnight

+0

谢谢@TheDarkKnight。 –

+0

很酷。很好地使用奇数/偶数索引。 – DineshKumar

0

所以,只要按照你所说的做一个列表,实际上最终会成为一组列表(只是提及它)。

output = [] 
for i in list2: 
    output.append({i, list1.pop(), list1.pop()}) 

如果你想要一个嵌套列表只是改变{}括号[]

此外,这将清空list1,所以如果您选择使用这种方式,并且稍后需要list1,则值得在内存中保留副本。

编辑:

正如在评论中指出,它看起来像你想从list1开始进行迭代。在这种情况下,请使用list1.pop(0),其中0是要从列表中弹出的索引。

+0

这个'pop'元素不会从数组的* end *中出现吗? – TheDarkKnight

+1

如果这很重要,你可以传入想要弹出的索引,所以如果你想弹出开始,只需调用'list1.pop(0)'而不是 – RHSmith159

+1

看看OP的例子,我认为*是*情况:) – TheDarkKnight

1

列表:

ls1 = list("ABCDEF") 
ls2 = list("123") 

iterls1 = iter(ls1) 
ls3 = [set(x) for x in zip(iterls1, iterls1, ls2)] 
print(ls3) 
# [{'A', '1', 'B'}, {'2', 'D', 'C'}, {'3', 'F', 'E'}] 
0
list1 = ["john", "kelvin", "harry", "rob", "jenny", "donne", "justin", "sam", "peter", "kitty"] 
list2 = ["radha", "mohan", "pankaj", "sikha", "samarth"] 

list3 = [[list1[2*i],list1[2*i+1],list2[i]] for i in xrange(len(list2))] 

这应该这样做,使用列表理解它看起来更加整洁。

0

VPfB的答案真的是pythonic,很好用iter
这里是本着同样的精神另一种变化:

list3 = list(map(set, zip(list1[::2], list1[1::2], list2))) 

的主要区别是:

而不是使用列表理解的 map
  • 投用zip生成到集合的元组。
  • 使用切片代替iter