我有一个排序的整数ID的列表,例如
[1, 2, 10, 15, 16, 17, 20, 34, ...]
Run Code Online (Sandbox Code Playgroud)
我在按ID排序的ID旁边有一个元组代码元组(tuple1),例如
((1, "A"), (2, "A"), (15, "B"), (16, "A"), (17, "B"), (34, "B"), ...)
Run Code Online (Sandbox Code Playgroud)
我还有另一个具有相同格式的元组(tuple2)
((1, "B"), (2, "B"), (10, "B"), (16, "A"), (17, "B"), (34, "B"), ...)
Run Code Online (Sandbox Code Playgroud)
我想将元组组合成一个字典,其中键是ID,值是一个列表,该列表按顺序包含来自tuple1的代码和来自tuple2的代码。如果ID存在于ID列表中,但不存在于元组中,则该值应为"N/A"。
因此,使用以上数据,应产生以下内容:
{1: ["A", "B"], 2: ["A", "B"], 10: ["N/A", "B"], 15: ["B", "N/A"],
16: ["A", "A"], 17: ["B", "B"], 20: ["N/A", "N/A"], 34: ["B", "B"]}
Run Code Online (Sandbox Code Playgroud)
我花了相当长的时间思考这个问题,但我无法提出解决方案。如果有人可以帮助我弄清楚如何在Python中运行它,那将非常有帮助。
谢谢。
编辑:这不是重复的,这个问题要复杂得多。
bus*_*ear 10
如果您将元组的元组放入字典中,将会容易得多。使用get设置为你的字典中的默认值,如果该键不存在:
ids = [1, 2, 10, 15, 16, 17, 20, 34]
tup1 = ((1, "A"), (2, "A"), (15, "B"), (16, "A"), (17, "B"), (34, "B"))
tup2 = ((1, "B"), (2, "B"), (10, "B"), (16, "A"), (17, "B"), (34, "B"))
tup1 = dict(tup1)
tup2 = dict(tup2)
{k: [tup1.get(k, 'N/A'), tup2.get(k, 'N/A')] for k in ids}
Run Code Online (Sandbox Code Playgroud)