【问题标题】:How to assign an array (two-dimensional list) to a dict in Python? [duplicate]如何将数组(二维列表)分配给 Python 中的 dict? [复制]
【发布时间】:2019-12-09 00:14:57
【问题描述】:

我想将一个数组(列表中的列表)分配给字典。

为此,我已经尝试过 fromkeys() 方法。但这并没有像我预期的那样工作。

# a list with 3 string elements
list_of_Strings = ['index', 'substance', 'container']
# a list with 3 lists, each list has a few values
index_list = [0,1,2]
substance_list = ['water','oil','acetone']
container_list = ['B100','B200','B300']
list_of_lists = [index_list, substance_list, container_list]

# this line sets all for all dict keys the value to 0
dict_dummy_1 = dict.fromkeys(list_of_Strings,0)

# when I try this line, in every "key value" are all 3 lists from list_of_lists:
# Key -> Value
# index -> index_list, substance_list, container_list
# substance -> index_list, substance_list, container_list
# container -> index_list, substance_list, container_list
dict_dummy_1 = dict.fromkeys(list_of_Strings,list_of_lists)

# but I want to have it like this:
# Key -> Value
# index -> index_list
# substance -> substance_list
# container -> container_list

# with a loop it is possible:
dict_dummy_2 = dict.fromkeys(list_of_Strings,0)
for i in range(len(list_of_Strings)):
    dict_dummy_2[list_of_Strings[i]] = list_of_lists[i]

是否可以避免循环解决方案?它有什么功能吗? 非常感谢您提前。 :)

【问题讨论】:

  • 你能添加你的最终输出吗

标签: python arrays list dictionary


【解决方案1】:

这是一个使用 zip 的简单 oneliner:

dict(zip(list_of_Strings,list_of_lists))

【讨论】:

    【解决方案2】:
    # a list with 3 string elements
    list_of_Strings = ['index', 'substance', 'container']
    # a list with 3 lists, each list has a few values
    index_list = [0,1,2]
    substance_list = ['water','oil','acetone']
    container_list = ['B100','B200','B300']
    list_of_lists = [index_list, substance_list, container_list]
    
    
    res = {i:j for i,j in zip(list_of_Strings, list_of_lists)}
    
    print(res)
    

    输出

    {'index': [0, 1, 2],
     'substance': ['water', 'oil', 'acetone'],
     'container': ['B100', 'B200', 'B300']}
    

    【讨论】:

      【解决方案3】:

      您可以使用 dict-comprehension:

      {list_of_Strings[i]: list_of_lists[i] for i in range(len(list_of_Strings))}
      

      【讨论】:

      • 或{key: value for key, value in zip(list_of_Strings, list_of_lists)}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多