V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chaleaoch
V2EX  ›  程序员

大佬们觉得这俩数据结构有什么优劣吗?还是无所谓?

  •  
  •   chaleaoch · 2021-01-05 17:53:56 +08:00 · 2085 次点击
    这是一个创建于 1422 天前的主题,其中的信息可能已经有所发展或是发生改变。
    [
        {
            "key_name": "value_name1",
            "data": {...}
        },
        {
            "key_name": "value_name2",
            "data": {...}
        }
    ]
    
    {
        "value_name1":{...},
        "value_name2":{...}
    }
    
    19 条回复    2021-01-06 13:13:58 +08:00
    zachlhb
        1
    zachlhb  
       2021-01-05 17:56:00 +08:00 via Android
    第二种取值方便
    wutiantong
        2
    wutiantong  
       2021-01-05 17:56:05 +08:00   ❤️ 1
    区别是有序和无序
    ayase252
        3
    ayase252  
       2021-01-05 17:57:51 +08:00 via iPhone
    本质上数列和哈希表的区别嘛

    看使用场景了
    0ZXYDDu796nVCFxq
        4
    0ZXYDDu796nVCFxq  
       2021-01-05 17:59:41 +08:00 via Android
    看你需要怎么读取数据,如果你需要访问 value_name1,结构 1 的时间复杂度是 O(n),结构 2 是 O(1)
    如果都是遍历访问,两者差不多一样
    securityCoding
        5
    securityCoding  
       2021-01-05 18:02:39 +08:00
    1 , 2 这种太野路子了不好校验
    kerr92
        6
    kerr92  
       2021-01-05 18:07:40 +08:00 via iPhone   ❤️ 2
    每过段时间就会出现的那种帖子……可以看看历史

    https://www.v2ex.com/t/629474

    https://www.v2ex.com/t/725418

    https://www.v2ex.com/t/730623
    azcvcza
        7
    azcvcza  
       2021-01-05 18:08:17 +08:00   ❤️ 1
    第一个如果是空数组的时候,对数组使用的 map,filter 都还能用;第二个如果是空,后台给个 null 回来就有点恶心人
    Jackeriss
        8
    Jackeriss  
       2021-01-05 18:09:55 +08:00 via iPhone
    老生常谈,根据需求决定
    javapythongo
        9
    javapythongo  
       2021-01-05 18:10:33 +08:00
    第二种是你预先知道有哪些 key 且不改变,不然的话就得循环对象,就不如第一种循环数组方便了
    kuro1
        10
    kuro1  
       2021-01-05 18:15:07 +08:00
    起码看见 5 次了
    0ZXYDDu796nVCFxq
        11
    0ZXYDDu796nVCFxq  
       2021-01-05 18:16:22 +08:00   ❤️ 2
    ```
    {"key_names": ["value_name1", "value_name2"],
    "value_name1": {...},
    "value_name2": {...}
    }
    ```
    皆大欢喜
    taogen
        12
    taogen  
       2021-01-05 19:27:50 +08:00 via Android
    第一种是数组
    第二种对象
    哪种方便用哪种咯,又不是不能跑。 🐶
    fengpan567
        13
    fengpan567  
       2021-01-05 19:29:34 +08:00
    又来了
    chaleaoch
        14
    chaleaoch  
    OP
       2021-01-05 19:45:21 +08:00
    @kerr92 可以可以. 谢谢.
    chaleaoch
        15
    chaleaoch  
    OP
       2021-01-05 19:47:17 +08:00
    @javapythongo 这回复和 id 不匹配啊. 至少 python 还有一个 _dict.get() 可以用啊. go 也有 map 可以用. 为啥一定要循环啊.
    mxtob
        16
    mxtob  
       2021-01-05 20:01:08 +08:00 via iPhone
    @kerr92 点进帖子里面看 又发现里面也有人说类似重复帖子出现。有点无限套娃了,哈哈
    javapythongo
        17
    javapythongo  
       2021-01-06 09:43:00 +08:00
    @chaleaoch 我说了你要知道 key 的情况下就用第二种,比如配置相关的,不知道 key 你怎么直接 get
    chaleaoch
        18
    chaleaoch  
    OP
       2021-01-06 13:13:09 +08:00
    @javapythongo 我的理解 key 代表某种意义, 譬如 可以用来做 id

    知道 key 的情况是只 知道所有的 key 都是 多少吗?
    我不需要知道


    for id, value in json_dct
    chaleaoch
        19
    chaleaoch  
    OP
       2021-01-06 13:13:58 +08:00
    @chaleaoch 而且 _dict.get('some_key'm 'default_value')
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3880 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:25 · PVG 18:25 · LAX 02:25 · JFK 05:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.