[英]merging in 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
我建议您使用字典,然后可以使用d.update
用另一个字典的键和值更新一个字典。
请注意,Python中的字典没有顺序。 相反,当您需要迭代时,可以获取它们的键,对其进行排序并在键上进行迭代,以获取相应的值。
如果您使用的是Python 2.7或3.1或更高版本,则可能要使用一个类OrderedDict
。
如果不能保证您的键是唯一的,则不应使用字典-重复的键将被覆盖。
此解决方案适用于重复的密钥:
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的建议改进)
如果保证您的密钥是唯一的,请结合使用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}
打印出答案。
k1 = [7,2,3,5] v1 = [10,11,12,26]
k2 = [0,4] v2 = [20,33]
d = dict(zip(k1,v1))d.update(zip(k2,v2))
answer = d.items()answer.sort()键= [k代表答案中的(k,v)]值= [v代表答案中的(k,v)]
打印键打印值
编辑:这是针对Python 2.6或更低版本,没有任何有序字典。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.