【问题标题】:Adding a list into a tuple?将列表添加到元组中?
【发布时间】:2014-04-13 22:20:55
【问题描述】:

这些是先前定义的。

def get_service_code(service):
    return str(service[0])

service_106_data = filter_routes(bus_stations, "106")  #[('106', '1', '1', '43009'), ('106', '1', '2', '43179'), .... ('106', '2', '51', '43009')]
service_106 = make_service(service_106_data, "106")  # ('106', [['43009', '43179',...'43009']])
print(get_service_code(service_106))  --> should return 106

bus_stations 这里是一个 txt 文件,其中包含这样的数字列表

106,1,1,43009
106,1,2,43179
.
.
.
106,2,1,03239
106,2,2,03211
.
.
.
106,2,50,43171
106,2,51,43009

那么这也是之前定义的

def get_route(service, direction):
    return str(service[int(direction)][0])

print(get_route(service_106, '1'))

应该返回这个

['43009', '43179', '43189', '43619', '43629', '42319', '28109', '28189', '28019', '20109', '17189', '17179', '17169', '17159', '19049', '19039', '19029', '19019', '11199', '11189', '11401', '11239', '11229', '11219', '11209', '13029', '13019', '09149', '09159', '09169', '09179', '09048', '09038', '08138', '08057', '08069', '04179', '02049', 'E0200', '02151', '02161', '02171', '03509', '03519', '03539', '03129', '03218', '03219']

  def make_service(service_data, service_code):
    routes = []
    curr_route = []

    first = service_data[0]  #('106', '1', '1', '43009')
    curr_dir = first[1]   # '1'
    l = list(curr_dir)    # ['1']


    for entry in service_data:
        direction = entry[1] #'1'
        stop = entry[3]  #'43009'

        if direction == curr_dir:   
            curr_route.append(stop) #[43009]
        else:
            routes.append(curr_route)   #[[]]
            curr_route = [stop]         #['43009']
            curr_dir = direction       #not '1'
            l.append(list(direction))  # ['1', __]


    routes.append(curr_route)   #[['43009']]

    #modify this code below
    return (service_code,curr_route)  #("106", [['43009']]) 

service_106 = make_service(service_106_data, "106")

print(service_106)

print(get_service_code((service_106))) # should return 106

print(service_106) 的预期输出是

('106',['1','2'],['03239', '03211', 'E0321', 'E0564', '03222', 'E0599', '03531', '03511', '03501', '02051', '02061', '04111', '04121', '08041', '08031', '08111', '08121', '09059', '09022', '09111', '09121', '09131', '09141', '13011', '13021', '11201', '11211', '11221', '11231', '11419', '11409', '11181', '11191', '19011', '19021', '19031', '19041', '17151', '17161', '17171', '17181', '20101', '28011', '28181', '28101', '42311', '43621', '43611', '43181', '43171', '43009'])

其中 ['1','2'] 假设是新添加的列表,我不仅应该能够添加 ['1','2'] 我应该也可以添加 ['A4'] / ['A2','A4'] 或其他非数字列表 我只是想在代码中添加新行并修改最后一行。

【问题讨论】:

  • 你有什么问题?
  • 我的问题是如何将列表添加到这个元组中。例如,我如何将 '1' 放入列表中,然后将其添加到元组中?
  • 这个问题不是很清楚。但是,return (service_code + (curr_route, )) #("106", [43009]) 怎么样
  • 元组是不可变的,所以你不能向元组添加东西。您只能创建一个以列表为成员的元组。
  • 这应该给你一个想法:stackoverflow.com/questions/16730339/…

标签: python list tuples


【解决方案1】:

我想你可以使用:

return tuple([service_code] + service_data)

【讨论】:

    【解决方案2】:

    我想你只需要

    return (service_code, list(set(zip(*service_data)[1])), curr_route)  #("106", [['43009']]) 
    

    虽然很难说(但这确实给出了预期的输出)

    使用

    make_service([('106', '1', '1', '43009'), ('106', '1', '2', '43179'), ('106', '2', '51', '43009')],"106")
    

    结果为@​​987654323@

    【讨论】:

    • 你好 Joran 谢谢你的回答。我刚刚编辑了这个问题,也许这更清楚了。 @乔兰
    • 抱歉,目前还不清楚。我们希望看到的是我有这个输入(提供示例输入),当我通过这个代码运行它时(提供一个我们可以复制和粘贴运行的代码示例)我得到这个(显示收到的输出),但是我期望这个(显示预期的输出)......到目前为止,四个条件中只有一个满足(也许源是可运行的,但没有输入我无法判断)
    • 我明白了...好吧,我在这里得到了我之前定义的代码。 @乔兰
    • 那么顶部的列表是service_106_data 吗? (我们当然越来越接近正确的问题了)
    • 是的。我现在的问题是,有了这些信息,我必须将 ['1','2'] 添加到其中,这样当我打印 service_106 时,它将返回一个带有 ['1','2'] @Joran 的元组
    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多