如何在Python 2.6中的元组列表中分离和遍历数据?

时间:2015-03-03 17:31:46

标签: python tuples python-2.6

背景

已更新:以下是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>

至于我的其余实现,我迷失了,但却无法将这个愚蠢的列表分开。

问题

  • 如何将这些元组列表中的数据分开才能使用它 期望结果部分中描述的实施?

1 个答案:

答案 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]}