【问题标题】:Take all keys and values in dictionary, put them in list - python获取字典中的所有键和值,将它们放入列表中 - python
【发布时间】:2013-10-11 04:07:51
【问题描述】:

我有一本字典,里面有这样的键和值:

1:0, 2:3 ,3:0: ,4:3 

键值一直到 500++,但值通常在 0 到 15 之间。如您所见,键值通常相同。

我想为每个值创建一个数组或列表或最好的,因此对于 0-15 将有 16 个数组,然后取出所有键并将它们放入正确的数组中。

所以在示例中应该是:

array 0 [1,3]
array 3 [2,4]

有什么想法吗?

【问题讨论】:

    标签: python arrays dictionary key


    【解决方案1】:

    类似这样的:

    vals = [[] for _ in range(16)]
    for k, v in my_dict.values():
        vals[v].append(k)
    

    【讨论】:

    • 其实我只得到 int object is not iterable。
    【解决方案2】:
    d = {1:0, 2:3 ,3:0, 4:3}
    lists = [[k for k,v in d.items() if v == x] for x in sorted(set(d.values()))]
    print lists
    

    输出:

    [[1, 3], [2, 4]]
    

    【讨论】:

    • 这很棒!但是,如果我想在每个列表上都有一个名字,独立?对属于 key1 的所有值说 list1
    【解决方案3】:
    a={i:[] for i in range(16)}
    for k,v in mydict:
       a[k].append(v)
    

    【讨论】:

      【解决方案4】:

      你想要一本字典吗?像这样?

      b = {1:0, 2:3 ,3:0 ,4:3}
      a = dict.fromkeys(b.values(), None)
      for key, value in b:
          if a[value] is None:
              a[value] = []
          a[value].append(key)
      

      这将生成如下输出: 打印一个 {0:[1,3], 3:[2,4]}

      请注意,如果字典 b 更大(甚至超过 16 个项目),最好不要将其初始化为

      a = dict.fromkeys(range(1, 16), None)
      

      而不是前面提到的。

      【讨论】:

        猜你喜欢
        • 2022-11-03
        • 2023-01-02
        • 2019-08-09
        • 2012-05-21
        • 2020-10-13
        • 1970-01-01
        • 1970-01-01
        • 2022-08-14
        • 2019-03-27
        相关资源
        最近更新 更多