试图将列表的元素添加到一起

时间:2016-01-29 22:23:12

标签: python

我有以下代码。正如您所注意到的,除了第二个customerList的索引每次迭代增加一个外,三个for循环是相同的。我正在做的是当呼叫在同一个人之间时,将列表hey的呼叫长度添加。这种方法有效,但我需要继续使用大约80种不同的来电/接收器组合。有关最佳方法的任何想法吗?

for i in range(0, len(listOfCalls)):
    if listOfCalls[i][1] == customerList[0][1] or listOfCalls[i][1] == customerList[2][1]:
        if listOfCalls[i][2] == customerList[0][1] or listOfCalls[i][2] == customerList[2][1]:
            hey[1] += int(listOfCalls[i][3])  


for i in range(0, len(listOfCalls)):
    if listOfCalls[i][1] == customerList[0][1] or listOfCalls[i][1] == customerList[3][1]:
        if listOfCalls[i][2] == customerList[0][1] or listOfCalls[i][2] == customerList[3][1]:
            hey[2] += int(listOfCalls[i][3])


for i in range(0, len(listOfCalls)):
    if listOfCalls[i][1] == customerList[0][1] or listOfCalls[i][1] == customerList[4][1]:
        if listOfCalls[i][2] == customerList[0][1] or listOfCalls[i][2] == customerList[4][1]:
            hey[3] += int(listOfCalls[i][3])  

1 个答案:

答案 0 :(得分:1)

这就是我想你想要的。我想你正在试图确定两个人花在一个花药手机上的总时间,无论谁叫谁。而不是使用列表“嘿”,你最好使字典“嘿”,其中键是按排序顺序的元组(caller1,caller2)。所以像这样:

hey = {}
for call in listOfCalls:
    caller1, caller2, dur = call
    key = tuple(sorted((caller1, caller2)))
    if key in hey:
         hey[key] += int(dur)
    else:
         hey[key] = int(dur)