我有这样的词典
b = {'2': ['10', '5', '4'], '4': ['1', '9', '2'], '3': ['90', '87', '77'], '1': ['30']}
我需要将列表中的每个值与其他值进行比较,并仅在dict中返回最小值
我试过了
for k,v in b.items():
for r in range(len(v)):
print(min(v[r] + v[r]))
它给了我一个奇怪的输出! 这是从该代码获得的输出。
0
5
4
1
9
2
0
7
7
0
0
0
0
我需要整个dict输出中值最小的键和值,如d = {4:[1]}
答案 0 :(得分:1)
丑陋的单行:
b = {'2': ['10', '5', '4'], '4': ['1', '9', '2'], '3': ['90', '87', '77'], '1': ['30']}
result = dict([min(((int(k), [min(map(int, v))]) for k, v in b.items()), key=lambda t: t[1])])
print(result)
输出:
{4: [1]}
故障:
b = {'2': ['10', '5', '4'], '4': ['1', '9', '2'], '3': ['90', '87', '77'], '1': ['30']}
# Generator of each key with its minimal element
# (here the generator would produce the list [(2, [4]), (4, [1]), (3, [77]), (1, [30])])
key_min = ((int(k), [min(map(int, v))]) for k, v in b.items())
# Pick tuple with minimal value
# (here the tuple (4, [1]) from the previous generator)
min_entry = min(key_min, key=lambda t: t[1])
# Make into dict
# (here {4: [1]}; first element of the tuple is the key and second element the value)
result = dict([min_entry])
print(result)
答案 1 :(得分:0)
你可以用dict-comprehension
来做 {int(key): [min( int(value) for value in value_list)] for key, value_list in b.items()}
答案 2 :(得分:0)
如果你想要一个直截了当的答案而没有任何混淆
min_list = {}
for k,v in b.items():
min_value = min(v)
min_list[min_value] = k
print({ min_list[min(min_list)]:min(min_list)})
答案 3 :(得分:0)
您想要最小的最小值,或者:
min({k: min(b[k], key=int) for k in b}.items(), key=lambda x: x[1])
返回元组('4', '1')
。
答案 4 :(得分:0)
首先,您的列表是数字作为文本。我没说错。如果您可以修复它,那么您可以在此代码中取消in()。
for k, v in b.items():
x = int(min(b[k]))
try:
lowVal
except:
lowVal = x
lowKey = k
else:
if x < lowVal:
lowKey = k
lowVal = x
print('{0}: {1}'.format(lowKey, lowVal))
编辑:一个单词
答案 5 :(得分:0)
如果您有多个具有相同最小值的键值对,该怎么办?
此解决方案也适用于此。
result={k:min(map(int,v)) for k,v in b.items()}
minVal=min(result.values())
result={k:[minVal] for k in result.iterkeys() if result[k] == minVal}
print(result)
{'4': [1]}
代表:
b = {'2': ['10', '5', '4'], '4': ['1', '9', '2'], '3': ['90', '1', '77'], '1': ['30']}
输出将是:
{'3': [1], '4': [1]}