【问题标题】:Nested Dictionary from Lists and Other Dictionaries来自列表和其他字典的嵌套字典
【发布时间】:2018-01-19 01:32:06
【问题描述】:

我正在尝试从预先存在的列表和字典中制作一个主字典。我很难让它像我认为的那样工作。 我有一份学生名单。

names=[Alice, Bob, Charles, Dan]

然后,我有 2 个字典,其中包含基于学生 ID 号的信息和另一条信息。

dict1={'100':9, '101:9, '102':11, '103':10} #the keys are student ID and the values are the grade level of the student. Alice is 100, Bob=101...

dict2={'100':9721234567, '101':6071234567, '103': 9727654321, '104':6077654321} #this dictionary gives the home phone number as a value using the student ID as a key.

如何制作一本主词典来提供学生的所有信息?这是我根据阅读其他问题的答案所做的尝试。

Dicta=dict(zip(names, dict1))
Dictb=dict(zip(names, dict2))
Dict=dict(zip(Dicta, Dictb))

这就是我想要得到的答案。

>Dict[Alice]
>>>'100, 9, 9721234567'

#这是 Alice 的 ID、年级和家庭电话

【问题讨论】:

    标签: python-2.7 list dictionary nested


    【解决方案1】:

    names 是有序的,但 dict 的键是无序的,因此您不能依赖 zip(names,dict1) 将名称与键(学生 ID)正确匹配。例如:

    >>> d = {'100':1,'101':2,'102':3,'103':4}
    >>> d
    {'102': 3, '103': 4, '100': 1, '101': 2} # keys not in order declared.
    

    您还需要一个与学生 ID 匹配的 dict。下面我添加了一个有序的 ID 列表,然后创建该字典。然后我使用字典推导来计算组合字典。

    names = ['Alice','Bob','Charles','Dan']
    ids = ['100','101','102','103']
    
    dictn = dict(zip(names,ids))
    dict1={'100':9, '101':9, '102':11, '103':10}
    dict2={'100':9721234567, '101':6071234567, '102': 9727654321, '103':6077654321}
    
    Dict = {k:(v,dict1[v],dict2[v]) for k,v in dictn.items()}
    print Dict
    print Dict['Alice']
    

    输出:

    {'Bob': ('101', 9, 6071234567L), 'Charles': ('102', 11, 9727654321L), 'Alice': ('100', 9, 9721234567L), 'Dan': ('103', 10, 6077654321L)}
    ('100', 9, 9721234567L)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2018-03-27
      • 2020-12-15
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 2022-11-22
      相关资源
      最近更新 更多