我正在尝试从字典项目列表加载到Python 2.7中的列表列表。当前数据看起来像下面的20行:
[{'professional:xp': '100', 'personal:power': 'fly', 'personal:hero': 'yes', 'custom:color': 'black', 'professional:name': 'batman'}, {'professional:xp': '86', 'personal:power': 'think', 'personal:hero': 'no', 'custom:color': 'grey', 'professional:name': 'gandalf'}, ...]
我想做这样的事情:
[[100, 'fly', 'yes', 'black', 'batman'][86, 'think', 'no', 'grey', 'gandalf']...]
我尝试了很多不同的循环方法,但是我没有得到结果。
i = -1
j = -1
scanList = []
joinList = [[]]
for item in scanList:
i = i+1
for k, v in item.iteritems():
j= j+1
joinList[i][j].append(v)
我想到了通过嵌套循环加载列表的想法(预先,我不知道我的i和j是否在正确的位置,但是我可以解决这个问题)。我只是不断摆脱索引错误,而且不知道是否应该初始化列表列表?
答案 0 :(得分:4)
现在是学习列表理解的好时机。还请注意,[dict].values()
方便地返回字典中的值列表。
joinList = [d.values() for d in scanList]
请注意,在Python 3.x values()
中会返回一个 view对象,该对象必须明确地转换为列表:
# Python 3.x version
joinList = [list(d.values()) for d in scanList]
答案 1 :(得分:1)
您可以使用values
function获取字典的值。现在,您必须遍历字典并调用它们的值:
%hook SBMainSwitcherViewController
-(void)viewDidLoad {
%orig;
UIAlertController * alert=[UIAlertController
alertControllerWithTitle:@"AppSwitcher" message:@"Clear cache"preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* yesButton = [UIAlertAction
actionWithTitle:@"Thank God !"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
}];
[alert addAction:yesButton];
[self presentViewController:alert animated:YES completion:nil];
}
%end
答案 2 :(得分:1)
您可以使用以下代码:
for item in scanList:
list = []
for key, value in item.iteritems():
list.append(value)
joinlist.append(list)
答案 3 :(得分:1)
data=[{'professional:xp': '100', 'personal:power': 'fly', 'personal:hero': 'yes', 'custom:color': 'black', 'professional:name': 'batman'}, {'professional:xp': '86', 'personal:power': 'think', 'personal:hero': 'no', 'custom:color': 'grey', 'professional:name': 'gandalf'}]
new_data=[list(j.values()) for j in data]
print(new_data)
输出
[['yes', 'black', 'batman', 'fly', '100'], ['no', 'grey', 'gandalf', 'think', '86']]