Python 如何从字典中的项连接到字符串

Python 如何从字典中的项连接到字符串,python,python-3.x,Python,Python 3.x,我想连接到一个字符串。我从字符串s开始,我想使用for循环遍历我的字典。我知道我所做的一切毫无意义,因为我在循环的条件下提到“我”,但在身体中从来没有提到过 我有这个 mydict1 = { 'item_1': [7,19], 'item_2': [0,3], 'item_3': [54,191], 'item_4': [41,43], } s = "Here are the items:" '\n' for i in mydict1: s += ke

我想连接到一个字符串。我从字符串s开始,我想使用for循环遍历我的字典。我知道我所做的一切毫无意义,因为我在循环的条件下提到“我”,但在身体中从来没有提到过

我有这个

mydict1 = {
    'item_1': [7,19],
    'item_2': [0,3],
    'item_3': [54,191],
    'item_4': [41,43],
}

s = "Here are the items:" '\n'

for i in mydict1:
    s += key + ':' str(mydict1[1] - mydict1[0]) + ' bases long, spanning from bases ' + str(mydict1[0]) + ' to ' + str(mydict1[1])
print(s)
我想要这个输出:

Here are the items:
item_1: 12 bases long, spanning from bases 7 to 19
item_2: 3 bases long, spanning from bases 0 to 3
item_3: 137 bases long, spanning from bases 54 to 191
item_4: 2 bases long, spanning from bases 43 to 41

最好使用f字符串:

for key, (start, end) in mydict1.items():
    print(f'{key}: {end-start} bases long, spanning from bases {start} to {end}')
当然,通过一些更改,您也可以使用str.format,但它的可读性会降低

要扩展我的答案并解释代码的错误,请执行以下操作:

当你像这样迭代mydict1中的i时:你迭代键。所以i的值将是字典的键 键不是定义的 mydict[0]将导致KeyError,因为没有键0或1
最好使用f字符串:

for key, (start, end) in mydict1.items():
    print(f'{key}: {end-start} bases long, spanning from bases {start} to {end}')
当然,通过一些更改,您也可以使用str.format,但它的可读性会降低

要扩展我的答案并解释代码的错误,请执行以下操作:

当你像这样迭代mydict1中的i时:你迭代键。所以i的值将是字典的键 键不是定义的 mydict[0]将导致KeyError,因为没有键0或1
我认为这种使用字符串格式的方法实现了您最初的期望:

mydict1 = {
    'item_1': [7,19],
    'item_2': [0,3],
    'item_3': [54,191],
    'item_4': [41,43],
}

s = "Here are the items:" '\n'

for key, (start, end) in mydict1.items():
    s += '{}: {} bases long, spanning from bases {} to {}\n'.format(key, end-start, start, end)
print(s)
当上述代码运行时,输出为:

Here are the items:
item_1:12 bases long, spanning from bases 7 to 19
item_2:3 bases long, spanning from bases 0 to 3
item_3:137 bases long, spanning from bases 54 to 191
item_4:2 bases long, spanning from bases 41 to 43

我认为这种使用字符串格式的方法实现了您最初的期望:

mydict1 = {
    'item_1': [7,19],
    'item_2': [0,3],
    'item_3': [54,191],
    'item_4': [41,43],
}

s = "Here are the items:" '\n'

for key, (start, end) in mydict1.items():
    s += '{}: {} bases long, spanning from bases {} to {}\n'.format(key, end-start, start, end)
print(s)
当上述代码运行时,输出为:

Here are the items:
item_1:12 bases long, spanning from bases 7 to 19
item_2:3 bases long, spanning from bases 0 to 3
item_3:137 bases long, spanning from bases 54 to 191
item_4:2 bases long, spanning from bases 41 to 43
您可以使用.join方法连接列表的所有元素:

mydict1={ '项目1':[7,19], '项目2':[0,3], '项目3':[54191], '项目4':[41,43], } base\u str=以下是项目:\n 公共_str=基长,从基跨越 out\U out=基本结构+\ “\n”.join[f{key}:{second-first}{common_str}{first}到{second} 对于mydict1.items中的键,第一个、第二个] 打印输出 输出:

您可以使用.join方法连接列表的所有元素:

mydict1={ '项目1':[7,19], '项目2':[0,3], '项目3':[54191], '项目4':[41,43], } base\u str=以下是项目:\n 公共_str=基长,从基跨越 out\U out=基本结构+\ “\n”.join[f{key}:{second-first}{common_str}{first}到{second} 对于mydict1.items中的键,第一个、第二个] 打印输出 输出:


这就是你想要的-但是你得到了什么?这就是你想要的-但是你得到了什么?考虑到有不同的选择可用-旧式%格式、str.format方法、f-string最快、可读性最好的坚持OP方法,也许他们不知道更好的方法不会使senseyes现在,我的评论是当你使用连接时。现在编辑你的答案的开头,在那里你仍然提到连接…考虑到有不同的替代方案可用-旧式%格式,str.format方法,f-string最快和最可读的坚持OP方法,也许他们不知道更好的方法不会让人感觉到,现在,我的评论是当你使用连接时。现在还可以编辑答案的开头,在这里您仍然提到连接。。。