使用字典的键和值进行迭代
Iterate using keys and values of a dictionary
我有一个字符串(string = 'OBEQAMXITWA'
),我想将它添加到一个空列表中,总是满足一个条件。某个字母不应该在字符串的确定位置,而是在其他位置。例如,字母 A
不应位于 5
位置,而应位于任何其他位置。如果满足此条件,我将字符串追加到列表中;如果没有,我就不追加了。
string = 'OBEQAMXITWA'
if 'A' != string[5] and ('A' in string[0:5] or 'A' in string[6:len(string)]):
word_list.append(string)
另一方面,我想检查字母 Z
是否不在位置 6
即 True
,但只有在 Z
时我才会添加处于位置 6
以外的任何其他位置。在这种情况下,Z
不在字符串中,所以我不会将它添加到列表中。
我想迭代地执行此操作,定义一个字典 (letter:position
) 并检查添加到字典中的所有字母和位置。例如,手动执行此操作的整个代码如下所示:
string = 'OBEQAMXITWA'
word_list=[]
letter_change_pos = {'A':5,'T':3,'Z':6}
if 'A' != string[5] and ('A' in string[0:5] or 'A' in string[6:len(string)]):
word_list.append(string)
if 'T' != string[3] and ('T' in string[0:3] or 'T' in string[4:len(string)]):
word_list.append(string)
if 'Z' != string[6] and ('Z' in string[0:6] or 'Z' in string[7:len(string)]):
word_list.append(string)
print(word_list)
我如何使用 for 循环 执行此操作?
def check_list(test_string, position_dict):
word_list = []
for key, value in position_dict.items():
if key != test_string[value - 1] and (key in string[0:value-1] or key in string[value:]):
word_list.append(test_string)
return word_list
if __name__ == '__main__':
string = 'OBEQAMXITWA'
letter_change_pos = {'A': 5, 'T': 3, 'Z': 6}
print(check_list(string, letter_change_pos))
我不太确定标题“使用字典的键和值进行迭代”与您的问题有什么关系。
您可以编写一个函数来检查字符串中的每个字符,如下所示:
def check_invalid_character_positions(string, invalid_positions):
for idx, char in enumerate(string):
if invalid_positions.get(char) == idx:
return False
# Now check that the characters in invalid_positions are present
# elsewhere in the string
return not set(invalid_positions).difference(string)
像这样使用它:
>>> string = 'OBEQAMXITWA'
>>> invalid_positions = {'A': 5, 'T': 3, 'Z': 6}
>>> if check_invalid_character_positions(string, invalid_positions):
... word_list.append(string)
根据 this comment 你也可以在技术上用我认为的正则表达式来做到这一点,但那会更复杂。
题目要求(1)循环字典中的每个字符,(2)检查字符是否在字符串中而不在指定的索引中,(3)如果是,则将字符串追加到列表中, (4) 否则,不要附加字符串。
使用循环的快速解决方案可以是:
# The required string to check.
string = 'OBEQAMXITWA'
# Create an empty list.
wordList = []
# The dictionary rules for the string.
letterChangePos = {'A': 5, 'T': 3, 'Z': 6}
# Loop on each character of the dictionary.
for key in letterChangePos.keys():
# Check if the character is in the string.
if (key in string):
# Check if the key is not the same as the character in the specified index.
if (key != string[letterChangePos[key]]):
wordList.append(string)
# Print the list.
print(wordList)
使用综合列表方法,解决方案是:
# The required string to check.
string = 'OBEQAMXITWA'
# The dictionary rules for the string.
letterChangePos = {'A': 5, 'T': 3, 'Z': 6}
wordList = [
string for key in letterChangePos.keys()
if ((key in string) and (key != string[letterChangePos[key]]))
]
# Print the list.
print(wordList)
我有一个字符串(string = 'OBEQAMXITWA'
),我想将它添加到一个空列表中,总是满足一个条件。某个字母不应该在字符串的确定位置,而是在其他位置。例如,字母 A
不应位于 5
位置,而应位于任何其他位置。如果满足此条件,我将字符串追加到列表中;如果没有,我就不追加了。
string = 'OBEQAMXITWA'
if 'A' != string[5] and ('A' in string[0:5] or 'A' in string[6:len(string)]):
word_list.append(string)
另一方面,我想检查字母 Z
是否不在位置 6
即 True
,但只有在 Z
时我才会添加处于位置 6
以外的任何其他位置。在这种情况下,Z
不在字符串中,所以我不会将它添加到列表中。
我想迭代地执行此操作,定义一个字典 (letter:position
) 并检查添加到字典中的所有字母和位置。例如,手动执行此操作的整个代码如下所示:
string = 'OBEQAMXITWA'
word_list=[]
letter_change_pos = {'A':5,'T':3,'Z':6}
if 'A' != string[5] and ('A' in string[0:5] or 'A' in string[6:len(string)]):
word_list.append(string)
if 'T' != string[3] and ('T' in string[0:3] or 'T' in string[4:len(string)]):
word_list.append(string)
if 'Z' != string[6] and ('Z' in string[0:6] or 'Z' in string[7:len(string)]):
word_list.append(string)
print(word_list)
我如何使用 for 循环 执行此操作?
def check_list(test_string, position_dict):
word_list = []
for key, value in position_dict.items():
if key != test_string[value - 1] and (key in string[0:value-1] or key in string[value:]):
word_list.append(test_string)
return word_list
if __name__ == '__main__':
string = 'OBEQAMXITWA'
letter_change_pos = {'A': 5, 'T': 3, 'Z': 6}
print(check_list(string, letter_change_pos))
我不太确定标题“使用字典的键和值进行迭代”与您的问题有什么关系。
您可以编写一个函数来检查字符串中的每个字符,如下所示:
def check_invalid_character_positions(string, invalid_positions):
for idx, char in enumerate(string):
if invalid_positions.get(char) == idx:
return False
# Now check that the characters in invalid_positions are present
# elsewhere in the string
return not set(invalid_positions).difference(string)
像这样使用它:
>>> string = 'OBEQAMXITWA'
>>> invalid_positions = {'A': 5, 'T': 3, 'Z': 6}
>>> if check_invalid_character_positions(string, invalid_positions):
... word_list.append(string)
根据 this comment 你也可以在技术上用我认为的正则表达式来做到这一点,但那会更复杂。
题目要求(1)循环字典中的每个字符,(2)检查字符是否在字符串中而不在指定的索引中,(3)如果是,则将字符串追加到列表中, (4) 否则,不要附加字符串。
使用循环的快速解决方案可以是:
# The required string to check.
string = 'OBEQAMXITWA'
# Create an empty list.
wordList = []
# The dictionary rules for the string.
letterChangePos = {'A': 5, 'T': 3, 'Z': 6}
# Loop on each character of the dictionary.
for key in letterChangePos.keys():
# Check if the character is in the string.
if (key in string):
# Check if the key is not the same as the character in the specified index.
if (key != string[letterChangePos[key]]):
wordList.append(string)
# Print the list.
print(wordList)
使用综合列表方法,解决方案是:
# The required string to check.
string = 'OBEQAMXITWA'
# The dictionary rules for the string.
letterChangePos = {'A': 5, 'T': 3, 'Z': 6}
wordList = [
string for key in letterChangePos.keys()
if ((key in string) and (key != string[letterChangePos[key]]))
]
# Print the list.
print(wordList)