Ответ 1
Try:
>>> t = ((1, 'a'),(2, 'b'))
>>> dict((y, x) for x, y in t)
{'a': 1, 'b': 2}
Для кортежа t = ((1, 'a'),(2, 'b'))
dict(t)
возвращает {1: 'a', 2: 'b'}
Есть ли хороший способ получить {'a': 1, 'b': 2}
(ключи и vals заменены)?
Я хочу иметь возможность возвращать 1 заданный 'a' или 2 заданный 'b', возможно, преобразование в dict не является лучшим способом.
Try:
>>> t = ((1, 'a'),(2, 'b'))
>>> dict((y, x) for x, y in t)
{'a': 1, 'b': 2}
Несколько более простой метод:
>>> t = ((1, 'a'),(2, 'b'))
>>> dict(map(reversed, t))
{'a': 1, 'b': 2}
Еще более кратким, если вы находитесь на python 2.7:
>>> t = ((1,'a'),(2,'b'))
>>> {y:x for x,y in t}
{'a':1, 'b':2}
>>> dict([('hi','goodbye')])
{'hi': 'goodbye'}
Or:
>>> [ dict([i]) for i in (('CSCO', 21.14), ('CSCO', 21.14), ('CSCO', 21.14), ('CSCO', 21.14)) ]
[{'CSCO': 21.14}, {'CSCO': 21.14}, {'CSCO': 21.14}, {'CSCO': 21.14}]
Если для одного и того же ключа есть несколько значений, следующий код добавит эти значения в список, соответствующий их ключу,
d = dict()
for x,y in t:
if(d.has_key(y)):
d[y].append(x)
else:
d[y] = [x]
Почему вы затрудняетесь? вы можете просто сказать:
t = ((1, 'a'),(2, 'b'))
tdic = dict(t)