已更新:以下是the horrendous list我正在使用(请原谅列表的假标题)。长度和数据可能会发生变化,因为我正在从不断变化的数据库中检索此信息。
我将进一步解释我的目的,因为我不确定最好的方法。每个数字代表ID ,如下所示。我需要创建一个XML文件,其中Software元素具有基于在元组中匹配的SoftwareID和TargetID的Target子元素。
例如:
SoftwareID TargetID XML Representation
----------------------------------------------------------------------
65 115 <-- This Software element (id=65) has only one Target
sub-element (id=115)
138 218 <-- This Software element (id=138) will have multiple
138 219 Target sub-elements (ids=218, 219, 220)
138 220
我已经将序列解压缩为here,但列表对于此实现来说太长了。我收到错误,其中 要解压的值太多 。
我现在看到这实际上是一个元组列表,而不仅仅是一个元组,所以无论如何这都不行。
我已尝试this实施,但得到错误,表示 元组对象没有属性'split'。 < / p>
至于我的其余实现,我迷失了,但却无法将这个愚蠢的列表分开。
答案 0 :(得分:3)
目前尚不清楚实际问题是什么......但也许这有助于解决问题
data = {}
for lhs,rhs in my_list_of_tuples:
try:
data[lhs].append(rhs)
except KeyError:
data[lhs] = [rhs]
print data.items()[:5]
稍微解释一下,让我们以不同的方式看待它
my_list_of_tuples = [(1,2),(3,5),(7,8),(7,9)]
for item in my_list_of_tuples:
#on first loop item=(1,2) ; 2nd loop item=(3,5); 3rd loop item=(7,8)
left_number = item[0]
right_number = item[1]
#these 2 lines can be simplified to
left_number,right_number = item
#now if left number is already in the data dictionary we will append the new right number to its list
try:
data[left_number].append(right_number)
except KeyError: #: if the left_number is not already in our data dictionary
data[left_number] = [right_number] #: create a new list that contains only the right number
#now that we are done we have data that maps left numbers to right numbers
print data
#{1:[2],3:[5],7:[8,9]}