我想从单个键的值中删除特定元素。
adj_city = {
'WA': ['NT','SA'],
'NT': ['WA','SA','Q'],
'SA': ['WA','NT','NSW','V'],
'Q' : ['NT', 'NSW'],
'NSW': ['Q','SA','V'],
'V': ['SA','NSW']
}
for i in adj_city['WA'] :
if(i=='NT'):
del(i)
我期望输出为'WA':['SA'],但是运行上述代码后,我没有得到输出
答案 0 :(得分:2)
如果要删除NT值,请使用remove,切勿同时迭代和删除:
adj_city = {
'WA': ['NT','SA'],
'NT': ['WA','SA','Q'],
'SA': ['WA','NT','NSW','V'],
'Q' : ['NT', 'NSW'],
'NSW': ['Q','SA','V'],
'V': ['SA','NSW']
}
adj_city['WA'].remove('NT')
print(adj_city['WA'])
输出
['SA']
答案 1 :(得分:1)
要了解为什么您的代码不起作用,请尝试理解以下代码:
arr = [1, 2, 3]
for val in arr:
del val
try:
val
except NameError as e:
print(e)
print(arr)
输出:
name 'val' is not defined
[1, 2, 3]
name 'val' is not defined
[1, 2, 3]
name 'val' is not defined
[1, 2, 3]
观察:
val
被删除(即不再可用),但arr
未被触及。只需使用列表理解:
adj_city = {
'WA': ['NT','SA'],
'NT': ['WA','SA','Q'],
'SA': ['WA','NT','NSW','V'],
'Q' : ['NT', 'NSW'],
'NSW': ['Q','SA','V'],
'V': ['SA','NSW']
}
adj_city["WA"] = [city for city in adj_city["WA"] if city != 'NT']
assert adj_city == {
'WA': ['SA'],
'NT': ['WA','SA','Q'],
'SA': ['WA','NT','NSW','V'],
'Q' : ['NT', 'NSW'],
'NSW': ['Q','SA','V'],
'V': ['SA','NSW']
}
答案 2 :(得分:0)
使用列表理解
例如:
adj_city = {
'WA': ['NT','SA'],
'NT': ['WA','SA','Q'],
'SA': ['WA','NT','NSW','V'],
'Q' : ['NT', 'NSW'],
'NSW': ['Q','SA','V'],
'V': ['SA','NSW']
}
adj_city["WA"] = [i for i in adj_city["WA"] if i != 'NT']
print(adj_city)
输出:
{'NSW': ['Q', 'SA', 'V'],
'NT': ['WA', 'SA', 'Q'],
'Q': ['NT', 'NSW'],
'SA': ['WA', 'NT', 'NSW', 'V'],
'V': ['SA', 'NSW'],
'WA': ['SA']}
注意:在迭代对象时删除元素不是一个好习惯。
答案 3 :(得分:0)
你可以去
adj_city = {
'WA': ['NT','SA'],
'NT': ['WA','SA','Q'],
'SA': ['WA','NT','NSW','V'],
'Q' : ['NT', 'NSW'],
'NSW': ['Q','SA','V'],
'V': ['SA','NSW']
}
# keys where the values need to be removed
dict_keys = ['WA']
# values to be removed
unwanted_values = ['NT']
for key in dict_keys:
try:
adj_city[key] = [item
for item in adj_city[key]
if not item in unwanted_values]
except KeyError:
pass
print(adj_city)
哪个产量
{
'WA': ['SA'],
'NT': ['WA', 'SA', 'Q'],
'SA': ['WA', 'NT', 'NSW', 'V'],
'Q': ['NT', 'NSW'],
'NSW': ['Q', 'SA', 'V'],
'V': ['SA', 'NSW']
}
答案 4 :(得分:-1)
首先,您正在使用library(spatstat)
#> Loading required package: spatstat.data
#> Loading required package: nlme
#> Loading required package: rpart
#>
#> spatstat 1.61-0.021 (nickname: 'New improved formula')
#> For an introduction to spatstat, type 'beginner'
X <- runifpoint(20, nsim = 250)
h <- hyperframe(ppp = X, group = rep(1:5, each=50))
studpermu.test(h, ppp ~ group)
#>
#> Studentized permutation test for grouped point patterns
#> ppp ~ group
#> 5 groups: 1, 2, 3, 4, 5
#> summary function: Kest, evaluated on r in [0, 0.25]
#> test statistic: T, 999 random permutations
#>
#> data: h
#> T = 3.6133, p-value = 0.125
#> alternative hypothesis: not the same K-function
数据类型。因此,您可以通过键名(dict
来调用所需列表。
打印WA
时,您会得到adj_city['WA']
。这个返回的对象是一个列表。使用列表操作['NT','SA']
,删除不需要的列表项。
remove