所以我得到了这个列表对象,它看起来像:
[['String1', integer1], ['String2', integer2], ['String3', integer3], ['String4', integer4]]
我想通过整数值得到'String1',而不是为此创建一个新方法。是否有一种优雅的方式来做到这一点?
答案 0 :(得分:1)
您可以使用列表理解:
>>> seq = [['String1', 4], ['String2', 8], ['String3', 15], ['String4', 8]]
>>> result = [s for s, i in seq if i == 8]
>>> print result
['String2', 'String4']
或者,如果您可以控制数据结构的格式,我建议使用字典。然后获取字符串很简单:
>>> d = {8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']}
>>> print d[8]
['String2', 'String4']
首先将数据转换为该格式非常简单,但我认为你不能在一行中干净利落地完成。
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for s, i in seq:
... d[i].append(s)
...
>>> print d
defaultdict(<type 'list'>, {8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']})
或者
>>> d = {}
>>> for s,i in seq:
... d.setdefault(i, []).append(s)
...
>>> print d
{8: ['String2', 'String4'], 4: ['String1'], 15: ['String3']}
答案 1 :(得分:0)
通过使用字典,您可以更灵活。
a_dict = { 'string1' : 6,
'string2' : 76,
'string3' : 765,}
for key in a_dict:
if(a_dict[key] == 76):
print('The number ' + str(a_dict[key]) + ' has a key name of ' + key)
如果需要,您还可以将列表作为值。