如何解决将二维数组的每个元素从 dic 转换为带有 ' '
我正在尝试编写一个程序,该程序将板显示为带有“_”(隐藏方块)、“.”的列表(按原样)。 (炸弹)、“ ”(空方块)或“1”、“2”等
game = {'dimensions': [2,4],'board': [['.',3,1,0],['.','.',0]],'mask': [[False,True,False,False],[False,False]],'state': 'ongoing'}
预期回报
[['.','3','1',' '],' ']]
我尝试就地更改它:
def transform(game):
for outer in game['board']:
for inner in outer:
if inner ==0:
inner =' '
else:
inner = "\'"+str(inner)+"\'"
print("inner",inner)
print(type(inner))
return game['board']
我将每个内部打印为所需格式的字符串,但最终返回值根本没有改变?? :
...
inner '3'
<class 'str'>
inner '1'
<class 'str'>
inner ...
[['.',0]]
解决方法
试试:
game = {'dimensions': [2,4],'board': [['.',3,1,0],['.','.',0]],'mask': [[False,True,False,False],[False,False]],'state': 'ongoing'}
def transform(game):
for outer in game['board']:
for i,inner in enumerate (outer):
if inner ==0:
outer[i] =' '
else:
outer[i] = "\'"+str(inner)+"\'"
print("inner",inner)
print(type(inner))
return game['board']
transform(game)
输出:
[["'.'","'3'","'1'",' '],["'.'","'.'",' ']]
,
您需要更改outer[{the index of inner}]
,而不是更改inner
。使用列表推导式的单行解决方案是创建一个新列表,而不是更改 旧列表。
单线解决方案:
game = {'dimensions': [2,'state': 'ongoing'}
def transform(game):
return [[' ' if inner == 0 else "\'"+str(inner)+"\'" for inner in outer] for outer in game['board']]
print(transform(game))
结果:
[["'.'",' ']]
EDIT:如果您不想使用单行和 list comprehension
创建新列表,您可以试试这个代码。
代码:
def transform_create(game_board):
result = []
for board in game_board:
temp = []
for item in board:
if item == 0:
temp.append(' ')
else:
temp.append("\'"+str(item)+"\'")
result.append(temp)
return result
print(transform_create(game["board"]))
结果:
[["'.'",' ']]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。