我有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的位置匹配的数据,但我需要将它分开。如果有更简单的方法可以做到这一点,那么我也会尝试尝试这个建议。
答案 0 :(得分:3)
这可能就是您要查找的内容,但请注意,嵌套词典的顺序可能与原始list_2
和list_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;
}
这应该正确地嵌套词典!