Python 使用列表理解创建使用dict值组合在一起的字符串列表
我有一张清单,上面写着:Python 使用列表理解创建使用dict值组合在一起的字符串列表,python,Python,我有一张清单,上面写着: { "address": "TestA", "zipcode": "95723", "postofficename": "TestB" } ['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result] 我想做一个列表理解,创建一个字符串列表,该列表以一个名为add
{
"address": "TestA",
"zipcode": "95723",
"postofficename": "TestB"
}
['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
我想做一个列表理解,创建一个字符串列表,该列表以一个名为address
的输入参数开头:
[
"TestA, 95723 TestB"
]
我似乎无法让它发挥作用,也不确定从这里走到哪里,我尝试了什么:
startswith_list = \
[r = '{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
这里有两个错误:
[r = '{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
首先,r=…
是一个语法错误,因为理解中的第一件事必须是一个表达式,如下所示:
{
"address": "TestA",
"zipcode": "95723",
"postofficename": "TestB"
}
['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
接下来,如果位于错误的位置,则应位于循环之后:
['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) for r in result if r['address'].startswith(address)]
这里有两个错误:
[r = '{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
首先,r=…
是一个语法错误,因为理解中的第一件事必须是一个表达式,如下所示:
{
"address": "TestA",
"zipcode": "95723",
"postofficename": "TestB"
}
['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
接下来,如果位于错误的位置,则应位于循环之后:
['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) for r in result if r['address'].startswith(address)]
语法错误是由于在列表理解的开始处有[r=…
,在之前有if
,对于,我通常会避免使用反斜杠进行行连续体。方括号可以很好地分解代码,请参见下文
奖励点:使用将dict格式化为字符串
startswith_list=[
“{address},{zipcode}{postofficename}”。格式映射(r)
对于结果中的r
如果r['address'].startswith(地址)
]
语法错误是因为在列表理解的开始处有[r=…
,在之前有if
,用于。另外,我通常也会避免使用反斜杠进行行连续体。方括号可以很好地分解代码,请参见下文
奖励点:使用将dict格式化为字符串
startswith_list=[
“{address},{zipcode}{postofficename}”。格式映射(r)
对于结果中的r
如果r['address'].startswith(地址)
]
如果您想要列表理解,需要将条件放在末尾而不是中间,这就是您的情况:
result = [{"address": "TestA", "zipcode": "95723", "postofficename": "TestB"}]
address = "Test"
startswith_list = ['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) for r in result if r['address'].startswith(address)]
print(startswith_list) # ['TestA, 95723 TestB']
你也可以考虑使用所谓的F字符串,如果你使用Python版本3.6或更高,并且控制输入(或者知道不会有恶意输入)。
startswith_list = [f"{r['address']}, {r['zipcode']} {r['postofficename']}" for r in result if r['address'].startswith(address)]
如果您想要列表理解,需要将条件放在末尾而不是中间,这就是您的情况:
result = [{"address": "TestA", "zipcode": "95723", "postofficename": "TestB"}]
address = "Test"
startswith_list = ['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) for r in result if r['address'].startswith(address)]
print(startswith_list) # ['TestA, 95723 TestB']
你也可以考虑使用所谓的F字符串,如果你使用Python版本3.6或更高,并且控制输入(或者知道不会有恶意输入)。
startswith_list = [f"{r['address']}, {r['zipcode']} {r['postofficename']}" for r in result if r['address'].startswith(address)]
r=…
在理解的开头是一个语法错误。首先应该是一个表达式,比如'{},{}{}。格式(r['address'],r['zipcode'],r['postofficename'])
@ForceBru好的,但只需删除“r=…”如果你知道如何解决这个问题,请添加一个答案:)r=…
在理解的开头是一个语法错误。首先应该是一个表达式,比如{},{}{}。格式(r['address'],r['zipcode'],r['postofficename'])
@ForceBru好的,但只需删除“r=…”无法解决问题,如果您知道如何解决此问题,请添加答案:)