繁体   English   中英

在python中合并

[英]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}
  1. 将两组数据中的所有键和关联值添加到单个字典中。
  2. 获取字典中的项目并对其进行排序。
  3. 打印出答案。

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM