的Python:用逗号分隔的从集列表列表
我有一个看起来像这样的列表:的Python:用逗号分隔的从集列表列表
[
{u'self': u'https://jr.com/Option/134', u'id': u'134', u'value': u'AI'},
{u'self': u'https://jr.com/Option/135', u'id': u'135', u'value': u'E'}
]
有没有办法拿出一个逗号分隔的“价值观”为:AI, E
我认为我可以这样做:
l = []
for x in l:
val = x['value']
l.append(val)
print l
final_l = ','.join(l)
但想知道我是否可以用较少的代码做到这一点。
可以节省感谢几行comprehension:
values = ','.join(item['value'] for item in lst)
演示:
>>> lst = [
... {u'self': u'https://jr.com/Option/134', u'id': u'134', u'value': u'AI'},
... {u'self': u'https://jr.com/Option/135', u'id': u'135', u'value': u'E'}
... ]
>>> values = ','.join(item['value'] for item in lst)
>>> values
u'AI,E'
','.join(['1','2','3','4'])
是创建基于字符串的输入列表/元组以逗号分隔的序列的一种方法。在这种情况下,结果是'1,2,3,4'
在您的情况,您的命令可能是这样的(假设你想加入每个字典元素的“价值”:
','.join([x['value'] for x in l])
这种理解很容易做的:
>>> s = [
... {u'self': u'https://jr.com/Option/134', u'id': u'134', u'value': u'AI'}, {u'self': u'https://jr.com/Option/135', u'id': u'135', u'value': u'E'}
... ]
>>> ', '.join(x['value'] for x in s)
u'AI, E'
In [1]: foo = [
...: {u'self': u'https://jr.com/Option/134', u'id': u'134', u'value': u'AI'}, {u'self': u'https://jr.com/Option/135', u'id': u'135', u'value': u'E'}
...: ]
In [2]: ", ".join([x.get('value') for x in foo])
Out[2]: u'AI, E'
@minitoto干杯。 “不要假设你的输入”:o) –
'.get()'默认为'None'。如果您确实想要抑制异常,则应该提供一个字符串作为默认值。 (尽管[错误不应该默默地通过](https://www.python.org/dev/peps/pep-0020/),这是一个重要原则) –
公平评论@AndreaCorbellini:o)'.get('价值,'')'会更好的情况下,不会大声失败,是啊 –
如果项目没有'价值'键?它会给你KeyError。 – tinySandy
@minitoto:毫无理由地沉默异常并不是一个好主意。您现在禁止的例外情况可能会在稍后导致意外行为。在这种情况下,你不会阻止任何错误,只是延迟它,使其更难调试,或者可能引入严重的安全漏洞。 –
它意味着你给出了一个潜在的错误代码片段,我推荐这样做','。如果item.get('value'))连接(item ['value']为item的项目) – tinySandy