在python中合并

时间:2010-06-02 19:16:40

标签: python

我有以下4个数组(分为2组),我想通过keys数组按升序合并。

如果更容易,我也可以使用字典作为结构。

python是否有任何命令可以快速实现?

此致 MN

# group 1
[7, 2, 3,  5]  #keys
[10,11,12,26]  #values 

[0,   4]   #keys
[20,  33]  #values 

# I would like to have
[ 0, 2, 3, 4, 5, 7 ] # ordered keys
[20, 11,12,33,26,33] # associated values

4 个答案:

答案 0 :(得分:6)

我建议您使用词典,然后您可以使用d.update使用其他词中的键和值更新一个词典。

请注意,Python中的字典不是有序的。相反,当您需要迭代时,您可以获取其密钥,对这些密钥进行排序并迭代密钥以获取相应的值。

如果您使用的是Python 2.7或3.1或更高版本,则可能需要使用类OrderedDict

答案 1 :(得分:3)

如果您的密钥不能保证是唯一的,则不应使用字典 - 重复的密钥将被覆盖。

此解决方案适用于重复键:

keys_a = [7, 2, 3,  5]
values_a = [10,11,12,26]
keys_b = [0,   4]
values_b = [20,  33]

combined = zip(keys_a+keys_b, values_a+values_b)
combined.sort()

keys, values = zip(*combined)

(编辑使用@tgray建议的改进)

答案 2 :(得分:2)

如果您的密钥保证唯一,请将zip与字典结合使用。

你这样做:

>>> x = [7, 2, 3,  5]  #keys
>>> y = [10,11,12,26]  #values 

>>> dict(zip(x,y))
{2: 11, 3: 12, 5: 26, 7: 10}

答案 3 :(得分:0)

  1. 将两组数据中的所有键和关联值添加到单个词典中。
  2. 获取字典中的项目并对其进行排序。
  3. 打印出答案。

    k1 = [7,2,3,5] V1 = [10,11,12,26]

    k2 = [0,4] v2 = [20,33]

    d =字典(拉链(K1,V1)) d.update(ZIP(K2,V2))

    答案= d.items() answer.sort() keys = [k for(k,v)in answer] values = [v for(k,v)in answer]

    打印键 打印值

  4. 编辑:这适用于Python 2.6或更低版本,它没有任何有序字典。