使用 for 循环遍历 Python 字典

Posted Python学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 for 循环遍历 Python 字典相关的知识,希望对你有一定的参考价值。

# list 切片后仍是list
list=[\'a\',\'b\',\'c\',\'d\']
print(list[:2])  # [\'a\', \'b\']    结果为list
print(list[:1])  # [\'a\']         结果仍为list



s=\'hello\' s1=\'\' for i in s: if i==\'e\': continue s1 += i print(s1) print(1>2) n=input() n = int(n) print(n>4 or n<4) n,m = 2,3 if n<m: n,m = m+2,n print(n,m) # list 切片后仍是list list=[\'a\',\'b\',\'c\',\'d\'] print(list[:2]) # [\'a\', \'b\'] print(list[:1]) # [\'a\'] n=input() m=input() print(n+m) n=9 m=8 n = n*m-n m = n-5*m print(m) n=10 m=20 if n==10 or m==40: print(\'hello\') else: print(\'world\') n=6 print(\'n+1\') print(21/7==3 and 7) sum = 0 num = [1,8,0,4] for i in num: if i<5: sum += i print(sum) print(4**2-6/2) n=0 m = 0 or 1 print(n==m) n=eval(\'6+8/2\') #1111111111111111 print(n) dic = \'name\':\'jack\',\'age\':15,\'number\':1804 #1111111111111111 for i in dic: # i 为字典键 print(i[:1]) # ame  ge   umber str = \'hello\' str= str.split(\'e\')[1][1] print(str) print(\'abc\'>\'ac\')

 使用 for 循环遍历 Python 字典 https://baijiahao.baidu.com/s?id=1713928110213127319&wfr=spider&for=pc

使用 for 循环遍历字典

【中文标题】使用 for 循环遍历字典【英文标题】:using a for loop to iterate through a dictionary 【发布时间】:2013-02-20 21:13:39 【问题描述】:

我通常使用 foreach 循环来遍历 Dictionary。

Dictionary<string, string> dictSummary = new Dictionary<string, string>();

在这种情况下,我想修剪空白条目,但是 foreach 循环不允许这样做。

foreach (var kvp in dictSummary)

    kvp.Value = kvp.Value.Trim();    

如何使用 for 循环做到这一点?

for (int i = dictSummary.Count - 1; i >= 0; i--)


【问题讨论】:

可能重复:What is the best way to iterate over a Dictionary in C#? 或这个 ;) ***.com/questions/1070766/… @Belial09 在您发布的链接中提出的问题中,似乎没有修改密钥;只是价值观。 【参考方案1】:

您不需要使用.ToArray().ElementAt()。就像用key访问字典一样简单:

dictSummary.Keys.ToList().ForEach(k => dictSummary[k] = dictSummary[k].Trim());

【讨论】:

【参考方案2】:

这个呢?

for (int i = dictSummary.Count - 1; i >= 0; i--) 
  var item = dictSummary.ElementAt(i);
  var itemKey = item.Key;
  var itemValue = item.Value;

【讨论】:

虽然可以使用这样的代码,但我不推荐它。 Enumerable.ElementAt 并不是访问字典中元素的最佳方式...您的代码可能是 O(n^2),因为字典不允许按位置访问元素。 你为什么要从头到尾迭代?别告诉我,是因为性能原因…… @AlexeiLevenkov ...谢谢。我不知道这件事。刚刚搜索了这个问题,它看起来像是一个巨大的缺点。再次感谢。 @DHN...好吧,我刚刚从问题中复制了它 这不是反向迭代的好用例。但是正确的用例是如果您打算删除项目。这样删除不会影响您的迭代/计数。【参考方案3】:

KeyValuePair&lt;TKey, TValue&gt; 不允许你设置Value,它是不可变的。

你必须这样做:

foreach(var kvp in dictSummary.ToArray())
    dictSummary[kvp.Key] = kvp.Value.Trim();

这里的重要部分是ToArray。这会将字典复制到一个数组中,因此在 foreach 中更改字典不会引发 InvalidOperationException

另一种方法是使用 LINQ 的 ToDictionary 方法:

dictSummary = dictSummary.ToDictionary(x => x.Key, x => x.Value.Trim());

【讨论】:

以上是关于使用 for 循环遍历 Python 字典的主要内容,如果未能解决你的问题,请参考以下文章

使用 for 循环遍历 Python 字典

python循环遍历字典元素问题求指教

蓝桥杯python之for循环(一)

Python 3.5 遍历字典列表

Python:使用 while 或 for 循环遍历列表

使用 for 循环遍历字典