如何使用3个列表创建字典词典?

时间:2016-12-12 11:24:03

标签: python python-2.7 list dictionary

我有3个清单。第一个列表包含2个值。第二个列表包含多个值,包括一些重复但是只有当它们与列表1中的不同值匹配相同位置时才会重复。然后第3个列表包含每个项目的唯一值。

list_1 = ["Value1", "Value1", "Value2", "value1"]
list_2 = ["1111", "1234", "1111", "2468"]
list_3 = ["uniqueValue1", "uniqueValue2", "uniqueValue3", "uniqueValue4"]

我想创建一个包含value1和value2作为键的字典,然后根据它们在列表中的位置将其他2个列表作为字典。

AllData = {"Value1": "Value1Dict", "Value2": "Value2Dict"}
Value1Dict = {"1111": "uniqueValue1", "1234": "uniqueValue2", "2468": "uniqueValue4"}
Value2Dict = {"1111": "UniqueValue3"}

所以基本上我已经订购了与Value1和Value 2的位置匹配的数据,但我需要将它分开。如果有更简单的方法可以做到这一点,那么我也会尝试尝试这个建议。

3 个答案:

答案 0 :(得分:3)

这可能就是您要查找的内容,但请注意,嵌套词典的顺序可能与原始list_2list_3值不同。

In [20]: x = {k: {} for k in list_1}

In [21]: for a, b, c in zip(list_1, list_2, list_3):
    ...:     x[a][b] = c
    ...:     

In [22]: x
Out[22]: 
{'Value1': {'1111': 'uniqueValue1',
  '1234': 'uniqueValue2',
  '2468': 'uniqueValue4'},
 'Value2': {'1111': 'uniqueValue3'}}

答案 1 :(得分:2)

from collections import defaultdict

all_data = defaultdict(dict)
for outer_key, inner_key, value in zip(list_1, list_2, list_3):
    all_data[outer_key][inner_key] = value

答案 2 :(得分:0)

我认为你几乎得到了上面的答案。您可以按以下方式嵌套字典

public ArrayList<User> getUsers(){

    ArrayList<User> usersList=new ArrayList<User>();
   Connection connection=getConnection();
    String query="SELECT * FROM info";
    Statement myState;
    ResultSet rs;
    try{
    myState=connection.createStatement();
    rs=myState.executeQuery(query);

    User user;
    while(rs.next()){
            user=new User(rs.getInt("id"),rs.getString("fname"),rs.getString("lname"),rs.getInt("age"));
            usersList.add(user);
        }
    }
    catch(Exception ep){                        
        ep.printStackTrace();
    }
    return usersList;
}

这应该正确地嵌套词典!