【问题标题】:Convert tuple into dict and choose dict key names将元组转换为 dict 并选择 dict 键名
【发布时间】:2021-05-19 10:18:06
【问题描述】:

我有以下元组: (1234234, 23, 0)

我想把它变成如下形式的字典:

{
  app: 1234234,
  sdk: 23,
  done: 0,
}

如何实现?

更新:这个问题与this one 不同,因为它并不暗示它只能通过使用两个元组来解决。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • "选择键名" -- 如何?要求用户输入键名?从文件中读取键名?使用预定义的常量作为键名?
  • dict(zip(('app', 'sdk', 'done'), (123423434, 23, 0)))

标签: python


【解决方案1】:

类似下面的东西

values = (1234234, 23, 0)
keys = ['app', 'sdk', 'done']
d = {k: values[idx] for idx, k in enumerate(keys)}
print(d)

输出

{'app': 1234234, 'sdk': 23, 'done': 0}

【讨论】:

  • 不错。或者,您可以使用zip。请参阅我的以下答案。
【解决方案2】:

@balderman 的另一种方法:

values = (1234234, 23, 0)
keys = ['app', 'sdk', 'done']
d = dict(zip(keys, values))

【讨论】:

    【解决方案3】:
    t = (1234234, 23, 0)
    keys = ["app", "sdk", "done"]
    d = {}
    
    for num in t:
        key = keys[t.index(num)]
        d[key] = num
    

    此代码将遍历元组中的数字并按顺序将键分配给字典中的数字。

    【讨论】:

      【解决方案4】:

      a)如果您想手动选择按键(用户通过 shell 输入),您可以这样做:

      values = (1234234, 23, 0)
      yourdict = {input(f"insert key fot value {value}: "): value for value in values}
      

      输出:

      >>> insert a key for value 1234234: value1
      >>> insert a key for value 23: value2
      >>> insert a key for value 0: value3
      
      {"value1": 1234234, "value2": 23, "value3": 0}
      

      b) 如果您想从键列表中自动执行此操作:

      values = (1234234, 23, 0)
      keys = ["key1", "key2", "key3"]
      yourdict = {keys[count]: value for count, value in enumerate(values)}
      

      输出:

      {"key1": 1234234, "key2": 23, "key3": 0}
      

      c) 如果您想以数字方式分配它们:

      values = (1234234, 23, 0)
      yourdict = {count: value for count, value in enumerate(values)}
      

      输出:

      {0: 1234234, 1: 23, 2: 0}
      

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 2017-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-05
        • 2018-05-28
        相关资源
        最近更新 更多