我有一个列表values
,它与我之前创建的字典中的某些keys
相匹配。
myDict = {1:'A',2:'B',3:'C'}
myList = ['A','A','A','B','B','A','C','C']
如何将
myList
转换为以下形式:myNewList = [1,1,1,2,2,1,3,3]
有人能指点我吗?
不确定是否重要,我是在另一个脚本中使用json创建了字典,现在在我的当前脚本中加载了创建的字典。
我有一个列表values
,它与我之前创建的字典中的某些keys
相匹配。
myDict = {1:'A',2:'B',3:'C'}
myList = ['A','A','A','B','B','A','C','C']
myList
转换为以下形式:myNewList = [1,1,1,2,2,1,3,3]
有人能指点我吗?
不确定是否重要,我是在另一个脚本中使用json创建了字典,现在在我的当前脚本中加载了创建的字典。
一种简单的方法是只需反转myDict
,然后使用它来映射新列表:
myNewDict = {v: k for k, v in myDict.iteritems()}
myNewList = [myNewDict[x] for x in myList]
此外,您还可以查看Python命名约定:Python变量和函数名称的命名约定是什么?
myDict
包含重复的值,这将导致基本不可预测的 myNewDict
和 MyNewList
。目前 O.P. 还没有解决这种情况... 我们并不知道是否已经保证了唯一值。 - Kevin J. ChasemyDict = {1:'A',2:'B',3:'C'}
myList = ['A','A','A','B','B','A','C','C']
value = [key for i in myList for key, value in myDict.iteritems() if i == value]
print value
这也可以运行:
myNewList = []
for val in myList:
for key, value in myDict.iteritems():
if val == value:
myNewList.append(key)
myDict
包含重复的值,这将按照大多数不可预测的顺序将所有匹配的键添加到 myNewList
。 - Kevin J. ChasemyNewList = []
for val in myList:
for key, value in myDict.iteritems():
if val == value:
myNewList.append(key)
break
- user61026
myDict
的值是唯一的?如果没有,请问当出现类似{1:'A', 2:'B', 3:'A'}
这样的字典时,你打算如何处理?你会将myList
中每个'A'
替换为1
或3
,还是会引发某种错误? - Kevin J. Chase