MAX鍵我有一本字典,看起來像這樣獲取字典
MyCount= {u'10': 1, u'1': 2, u'3': 2, u'2': 2, u'5': 2, u'4': 2, u'7': 2, u'6': 2, u'9': 2, u'8': 2}
我需要的是10最高鍵,但如果我嘗試max(MyCount.keys())
它給出9最高。
與max(MyCount)
相同。
字典是動態創建的。
MAX鍵我有一本字典,看起來像這樣獲取字典
MyCount= {u'10': 1, u'1': 2, u'3': 2, u'2': 2, u'5': 2, u'4': 2, u'7': 2, u'6': 2, u'9': 2, u'8': 2}
我需要的是10最高鍵,但如果我嘗試max(MyCount.keys())
它給出9最高。
與max(MyCount)
相同。
字典是動態創建的。
這是因爲u'9' > u'10'
,因爲它們是字符串。
要進行數值比較,請使用int
作爲關鍵字。
max(MyCount, key=int)
(呼叫.keys()
通常是不必要的)
max(map(int, MyCount))
或者,如果你想返回值是原始的字符串:
max(MyCount, key=int)
調用'dict.keys'在這裏(和大多數地方)是不必要的,可能效率低下。 – 2010-06-27 00:56:11
由於您的鍵是字符串,它們是字典順序比較,「9」是最大值確實如此。
你在找什麼是一樣的東西:max(int(k) for k in MyCount)
這是你的問題:
>>> u'10' > u'9'
False
實際上,你要比較的字符 '1' 和 '9' 在這裏。你想要的可能是這樣的:
max(long(k) for k in MyCount)
或創建與數字作爲關鍵字(而不是字符串)的字典。
對字符串值使用max。你必須將它們轉換爲int。嘗試是這樣的:
print(max([int(s) for s in MyCount.keys()]))
或者蒂姆·建議:
print(max(int(s) for s in MyCount))
你既不需要方括號也不需要'.keys()'方法。 – 2010-06-24 07:57:04
謝謝,回覆更新。 – 2010-06-24 08:23:08
你需要比較實際的數值。目前,您正在用文字比較字符串。
max(MyCount, key=int)
唯一的pythonic答案。 – SilentGhost 2010-06-24 09:28:22
調用'dict.keys'通常是多餘的。 – 2010-06-27 00:54:59