我有以下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
答案 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)
打印出答案。
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]
打印键 打印值
编辑:这适用于Python 2.6或更低版本,它没有任何有序字典。