假设我有两个词典的列表:
iter_list = [{0: [2, 1, 3],
1: [3, 2, 1],
2: [1, 2, 3],
3: [2, 3, 1],
4: [1, 2, 3],
5: [2, 3, 1]},
{0: [2, 3, 1],
1: [1, 2, 3],
2: [1, 2, 3],
3: [1, 2, 3],
4: [2, 3, 1],
5: [1, 3, 2]}]
每个字典有6个键,编号为0到5。 我想按键的顺序一次一个地遍历每个字典,并使输出成为一对与键(按键值排序)和相应列表的第一个值,第一个值对应于第二个键等,然后是键和第二个值等。希望示例输出将澄清:
0 2
1 3
2 1
3 2
4 1
5 2
0 1
1 2
2 2
3 3
4 2
5 3
0 3
1 1
2 3
3 1
4 3
5 1
0 2 //2nd dictionary iteration
1 1
2 1
3 1
4 2
5 1
0 3
1 2
2 2
3 2
4 3
5 3
0 1
1 3
2 3
3 3
4 1
5 2
我只能弄清楚如何遍历第一个字典的第一个位置,但无法弄清楚如何使用[0]作为迭代变量来遍历值列表中的所有位置在继续下一本字典之前。
for i in iter_list:
for key, value in i.iteritems():
print key, value[0]
非常感谢任何帮助!谢谢!
答案 0 :(得分:4)
如果我理解正确,在你的情况下,你需要迭代iter_list 3次
>>> for i in iter_list:
... for x in range(3):
... for key, value in i.iteritems():
... print key, value[x]
...
输出:
0 2
1 3
2 1
3 2
4 1
5 2
0 1
1 2
2 2
3 3
4 2
5 3
0 3
1 1
2 3
3 1
4 3
5 1
0 2
1 1
2 1
3 1
4 2
5 1
0 3
1 2
2 2
3 2
4 3
5 3
0 1
1 3
2 3
3 3
4 1
5 2
答案 1 :(得分:2)
使用zip
和itertools.chain
以及unpacking技巧的不同方法:
0 2
1 3
2 1
3 2
4 1
5 2
0 2
1 1
2 1
3 1
4 2
5 1
0 1
1 2
2 2
3 3
4 2
5 3
0 3
1 2
2 2
3 2
4 3
5 3
0 3
1 1
2 3
3 1
4 3
5 1
0 1
1 3
2 3
3 3
4 1
5 2
输出:
pairs = list(pairs)
注意:如果您想重新使用pairs
,请务必使用+ (NSDate*)dateForTodayAtHour:(NSUInteger)hour andMinutes:(NSUInteger)minutes {
NSDate* today = [NSDate date];
NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents* weekdayComponents = [gregorian components:(NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear) fromDate:today];
[weekdayComponents setHour:hour];
[weekdayComponents setMinute:minutes];
[weekdayComponents setSecond:0];
NSDate* result = [gregorian dateFromComponents:weekdayComponents];
return result;
}
。
答案 2 :(得分:1)
列表理解应该:
>>> output_list = [[k, d[k][i]] for d in iter_list for i in range(3) for k in sorted(d)]:
>>> for k, dki in output_list:
... print k, dki
...
0 2
1 3
2 1
3 2
4 1
5 2
0 1
1 2
2 2
3 3
4 2
5 3
0 3
1 1
2 3
3 1
4 3
5 1
0 2
1 1
2 1
3 1
4 2
5 1
0 3
1 2
2 2
3 2
4 3
5 3
0 1
1 3
2 3
3 3
4 1
5 2
答案 3 :(得分:1)
也许你想这样做:
>>> min(len(v) for k,v in i.iteritems() for i in iter_list)
3
假设字典中的值具有固定长度3,否则您必须弄清楚3来自何处。 例如,它可能是所有字典的所有值的最小值长度:
{{1}}