跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 昨天没说清楚,今天再来请教一下!
未分類
24 11 月 2020

昨天没说清楚,今天再来请教一下!

昨天没说清楚,今天再来请教一下!

資深大佬 : css3 4

是这样的,有多个长度一样且是偶数的 list,现在假设 2 个 A, B

A = [1, 2, 3, 4] B = ["a", "b", "c", "d"] 

想生成一个这样类型的list

# f1 和 f2 是固定不变的, value 取自于 A, B,每一项分别对应到 f1,f2 上, 然后两两结合, 1a, 2b 一组,3c, 4d 一组,依次类推... ret = [     [{"f1":1, "t1":"a"},{"f2":2, "t2":"b"}],     [{"f1":3, "t1": "c"}, {"f2":4, "t2": "d"}] ] 
# 我写了个列表推导式,但结果不符合预期 myret = [     [{"f1":A[x], "t1":B[x]}, {"f2":A[x+1], "t2":B[x+1]}] for x in range(len(A)-1) ]  # 它输出是这样,中间重复了,想不到再怎么处理一下了 [[{'f1': 1, 't1': 'a'}, {'f2': 2, 't2': 'b'}], [{'f1': 2, 't1': 'b'}, {'f2': 3, 't2': 'c'}], [{'f1': 3, 't1': 'c'}, {'f2': 4, 't2': 'd'}]]  

大佬有話說 (12)

  • 資深大佬 : yaodong

    “`
    myret = [{“f1”: x, “t1”: y} for x, y in zip(a, b)]
    “`

  • 資深大佬 : darklowly

    python 忘记了,你这个是逻辑错误,我按照你的语法修改了一下

    A = [1, 2, 3, 4]
    B = [“a”, “b”, “c”, “d”]

    myret = [
    [{“f1”:A[x], “t1”:B[x]}] for x in range(len(A))
    ]

    print(myret)

  • 主 資深大佬 : css3

    @yaodong 老哥,不是这样

  • 主 資深大佬 : css3

    @darklowly

  • 資深大佬 : darklowly

    哦那就是这样??

    A = [1, 2, 3, 4]
    B = [“a”, “b”, “c”, “d”]

    length = int(len(A)/2)

    myret = [
    [{“f1”:A[2*x], “t1”:B[2*x]}, {“f2”:A[2*x+1], “t2”:B[2*x+1]}] for x in range(length)
    ]

    print(myret)

  • 資深大佬 : JeffGe

    ……[2 * x]……[2 * x]……[2 * x + 1]……[2 * x + 1]……for x in range(len(A)//2)……

    或

    ……[x]……[x]……[x + 1]……[x + 1]……for x in range(0, len(A), 2)……

  • 資深大佬 : MrGba2z

    ps = list(zip(A, B))

    myret = [[{“f1”: p[0], “t1”: p[1]}, {“f1”: ps[i+1][0], “t2”:ps[i+1][1]}] for i, p in enumerate(ps[:-1])]

  • 資深大佬 : MrGba2z

    额..刚才把你手头的和想要的看反了..

    ps = list(zip(A, B))
    myret = [[{“f1”: p[0], “t1”: p[1]}, {“f1”: ps[2*i+1][0], “t2”:ps[2*i+1][1]}] for i, p in enumerate(ps[:-1:2])]

  • 主 資深大佬 : css3

    @darklowly
    @JeffGe
    @MrGba2z
    老哥们,成了,感谢感谢,学习了,还是采用的 range, 关键点是 range 的步偿取 2

  • 資深大佬 : freakxx

    我一般不会这么去写代码,感觉太硬,

    我会先实现一个 chunk 方法,把长度划分成想要的长度,
    然后再拼装在一起
    最后再按想要的结构去做处理。

    代码:
    https://gist.github.com/chrisguox/030515515f64e38efced2066dee7991b

  • 資深大佬 : freakxx

    > 是这样的,有多个长度一样且是偶数的 list,现在假设 2 个 A, B

    我感觉像这样的需求,想法,
    一般是要拆分会比较好,

    像我上面写的代码,
    如果需要的话,再写
    一个 generate_chunk_for_fields(),return *args,
    写一组 key 名,

    那么以后再加什么,只是需要把东西扔进去这个定义函数, *args 也直接转进去 generate_ft_struct, 直接做匹配就 ok 。

  • 主 資深大佬 : css3

    @freakxx 感谢老哥的思路,受益匪浅

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具